C语言的一个小题 急!谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:27:27
int a=1

如果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是什么来着?

规则就是我说的那样~~~