ASCII码排序 题解

1.

while(scanf("%c%c%c%*c",&a,&b,&c)!=EOF)  

 这里需要注意  输入多组语句 while后面不能加分号;

2.%*c"空字符,不存储字符的字符滤掉回车。

   输入多个字符时直接连续用%c,不需要加入分隔符,同样输入也是连续输入且不能使用任何其他字符(如空格,回车等)来分隔。空格、制表以及回车都将被视作有效的字符输入。

  当字符和其他数值类数据混合输入时,字符要放在前面,数值放在后面输入。这样可以保证开始已经有效的输入了字符。但需要输入一个整数i和一个字符ch。scanf(“%d%c”,&i,&ch);要求在整数后面不能有任何分隔,如回车,要立即跟随要输入的字符。如果不小心输入了回车,则回车符将被输入到字符变量ch中。

3.逗号表达式:

例:

z=(x%y,x/y) 先计算x%y =1,再计算x/y=3,然后 z=(1,3)=3

逗号表达式:多个表达式可以用逗号隔开,其中用逗号分开的表达式的值分别计算,但整个表达式的值是最后一个表达式的值。

再如:

a[0]=(0,1),但是(0,1)里面是逗号表达式,所以指向a[0]的指针p所指向的是1。

 语句1中,a1=(++b,c--,d+3);a1=(3,7,8),这里需要注意++b和c--的区别,然后根据逗号表达式,a1=8;

语句2中,a2=++b,c--,d+3;a2=4,6,11,但是此刻后面的表达式没有小括号,也就是说,这不是逗号表达式,而是加了一个赋值的语句,逗号表达式的优先级最低,所以a2=4;

猜你喜欢

转载自www.cnblogs.com/hrlsm/p/12234417.html