C语言的一个小题 急!谢谢
来源:百度知道 编辑:UC知道 时间:2024/06/08 19:27:27
int a=1
如果printf("%d%d",a,a++);
则输出结果是11
如果printf("%d%d",a,++a);
则输出结果是22
这两个的具体区别是什么啊?
谢谢
如果printf("%d%d",a,a++);
则输出结果是11
如果printf("%d%d",a,++a);
则输出结果是22
这两个的具体区别是什么啊?
谢谢
区别在于a++是对a的先用后增即a++在该语句中的第一个出现的地方表示之前的那个a值,a++出现之后a的值增加 1,
++a是对a的先曾后用,就是把前面的那个a的值拿来加1后在所在语句中被使用
printf()函数接收的参数是从右到左,而输出的时候是从左到右,
所以printf("%d%d",a,a++); 时两个参数a都是1,因为a++是先引用。所以先输出两个1,a再变成2。
printf("%d%d",a,++a); 因为接收参数是从右到左,所以先执行++a,这时两个参数a都是2。
用“,”分割的表达式的结果是最后面的表达式的值
比如
int a = (100,200);
输出a = 200;
还有就是说","的符号优先级别是最低的
然后再看++的前置与后置
a++表示,先调用a,之后再进行a+1的操作,也就是说,如果你在printf("%d%d",a,a++); 后面,再加一个printf("%d",a); 就会输出 2;
++a表示,先让a=a+1,再调用a。这样应该清楚了吧?
printf("%d%d",a,a++);与printf("%d%d",a,++a);前者会直接调用a++的a后,再执行a=a+1操作,后者是先执行++a操作,再调用输出a。
a++;
是执行完printf语句后,a加上1
++a;
是执行printf语句之前,a加上1
你给的两个语句的输出结果是不是有点问题哈~~~初始的a是什么来着?
规则就是我说的那样~~~