csfw.net
当前位置:首页>>关于int a=1; printf("%d, %d, %d\n", a, ++a, a++);结...的资料>>

int a=1; printf("%d, %d, %d\n", a, ++a, a++);结...

1、C语言 main() { int a=9; a+=a-=a+a; printf(“%d\n”,a); }最后结果就是-18; 2、赋值语句,从右到左依次运行:那么:int a=9;a+=a-=a+a; 3、相当于:a-=a+a;a+=a;然后相当于:a=a-(a+a);a=a+a; 4、由于a初始化为9:a=a-(a+a)=-a=-9;a=a+a=-9+...

++运算符前缀和后缀的效果不一样,a++是后缀,该表达式本身的值是a原来的值,就是100,但是a会增加1,所以之后a变成了101

0377表示一个八进制数,换算成十进制就是255 a&0377表示十进制的1234和十进制的255做与运算 即0100,1101,0010 & 0000,1111,1111 = 0000,1101,0010 (000011010010)2 = (210)10 = (377)8

30,22 优先级:++>+>, +结合方向为自左向右,++结合方向为自右向左, 故先执行a+++b中的++b,得b=21,故a+++b=21+9=30, 再执行++b,得b=22 注意:不同的编译器可能得出不同的答案

int a=0x11 就是a=17 ++a就是先a自增,然后再取用a的值,即输出的是18。 若是a++,则是先取用a的值,然后再a自增。

a=011在前面加了‘0’,于是编译器默认把它当成八进制的数,八进制的“011“相当于十进制的“9”

解释如下: 首先,运算a=i+1,则a=6; 接着运算a+2,然后就是a+3,括号里面的表达式运算完了,最后赋给a的是a+3的运算结果,a的值是6,所以6+3=9,最后输出a的值为9,逗号运算符的结合行是从左至右的,最后的表达式的值才是赋值表达式的右值。

输出结果是20,a的值是15。 原因: a=3*5,这里给a赋值了,赋值为15 后边的a*4,a+5是表达式,但是都没有给a赋值,所以a仍然是15 (a=3*5,a*4,a+5) 这个逗号表达式运算结果是取最后一个表达式的值a+5,即20,所以最后打印出来是20。

*p++是指先返回*p的数值然后将p++,此时p的值已经不是a的指针了。 所以说 printf("%d %d\n",*p++,*(q++)); 会输出:2 2 但是p和q的值都变了,int 是4字节,如果a的指针是0x22ff44,那么p和q都是0x22ff48 这个:printf("%d %d\n",*p,(*q)++); 会...

int i=0,j=0,a=6; if((++i>0)||(++j>0))a++; printf("i=%d,j=%d,a=d%\n",i,j,a); 由于i=0,++i后i=1>0,所以条件语句只执行了++i>0的判断就可以了,跳过了++j>0的判断 而判断后执行a++;后a的值变成7,所以结果是B

网站首页 | 网站地图
All rights reserved Powered by www.csfw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com