LYUzh 发表于 2017-9-8 11:35:08

自增自减问题

#include<stdio.h>
int main()
{
        int i=8;
        printf("%4d%4d%4d%4d%4d%4d%4d\n",++i,--i,i++,i--,-i++,-i--,i);
}
测试代码是上面这个,输出的是 8 7 8 8 -8 -8 8
但是如果将上面的printf拆分成多个在输出结果就变成了9 8 8 9 -8 -9,
求助各位大佬这是为什么啊。

ba21 发表于 2017-9-8 11:42:42

i++ 这类全部在下条语句生效。
++i 这类立即生效。

Jackstraw瑞 发表于 2017-9-8 14:58:29

printf输出打印从后往前解析,所以先解析i,再解析-i--,记住i--,先使用i,i再自减,而在printf这条语句的“一个整体”中。i自减和自加的操作会在“一个整体”之后执行

Ccoding 发表于 2017-9-8 16:41:09

因为这个与printf的格式输入和输出有关系,它是按照顺序的。
人的主观意识认为它是独立的,意思是说,你以为--i是从i=8开始的,其实是i=9,再--i=8的,后面的以此类推。
希望得到最佳答案,嘿嘿。我之前也是弄不明白,现在懂了。
页: [1]
查看完整版本: 自增自减问题