C语言 ++ -- 操作符疑问

来源:百度知道 编辑:UC知道 时间:2024/06/15 01:37:21
int main()
{
int i=5;
printf("\n%d",++i + ++i + ++i + ++i + ++i );
}
为什么这个函数的输出是41,而不是40?
为什么“++i + ++i + ++i + ++i + ++i”不是相当于先将i加1到6,
变成6+7+8+9+10=40?

printf()中的顺序是←自右往左的!这样应该很容易想明白!

在 C++ 语言中,一个表达式中的副作用发生顺序和时机是“未指名”的。类似这种表达式都有很大内在问题的,千万不要写。

++i是先加再付值,你这样写很危险啊

楼上说的对!
不同的编译器编译你的那个程序,得到的结果可能都不一样!(这是千真万确的事情,不是我瞎说)。这种题只能在低级下贱的等级考试里可能有,在实际应用中要是看到这种代码,作为项目负责人一定会把写这个代码的人揪出来痛扁!!!

不同编译器不同结果,你最好加个括号吧.而且这种写法,很乱..唉...悲哀.

不同的编译器结果不同