这第一个为啥不是9啊。求大佬帮忙解答谢谢谢谢

#include
void main()
{int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);

}

结果不确定,函数参数的求值顺序是C语言的未定义行为,语言规范没有规定顺序,不同的编译器不能保证输出的结果一致。你可以试不同的编译器,结果不同

图片说明

https://blog.csdn.net/chencheng126/article/details/47406597?utm_source=blogxgwz8

我可以再打一个比方,比如我让你们班上的同学都写一个函数 sum(n),计算1+2+...+n的值

你写的是
int sum(int n)
{int s = 0;
for (int i = 1; i <= n; i++) s+= i;
return s;}
你的同学二狗写的是
int sum(int n)
{return (1+n)*n/2;
}
这两个程序在n>=1的时候,运算结果一样。
现在问题来了,当n=-10的时候,你的程序返回10,二狗的程序返回-45。可能铁蛋写的程序返回-1234
大家的就不一样。
为什么,因为老师布置题目的时候,没有规定n<1怎么输出,所以结果是什么取决于你的程序怎么写的。
一个道理,不同的编译器没有考虑这种代码应该输出什么,所以结果五花八门了。

问题解决的话,请点下采纳。

你是说 ++i 吗++i这个表达式是9,你在哪里看到的不是9

你这个输出第一个是++i,++i的工作原理是先加再用,输出9.

解题方案加解析:解决问题请采纳!
有干扰。
一个一个来,减少干扰。
代码最好别这么玩!
系统函数各个提供的不一样,每一个标准的。
分行写,减少干扰就行了!
注:别听那啥的瞎说八道,(第一个回答不带)运算符之前先运算,没那个正经书向他那说。i++才属于他说的那种。再说你看后面的运算是他说的那样吗?
按我方法做:一行一行来。