i++ 的问题。
#include<stdio.h>int main(void)
{
int i = 5;
int p ;
p = (++i)+(++i)+(++i);
printf("%d",p);//输出结果 P = 24
return0;
}
问: 为什么是8+8+8 = 24.我的理解是 第一个++i = 6 第二个就是6+1=7 第三个 8 . 6+7+8 = 21. 应该可以写成这样:(i=++i)+(i=++i)+(i=++i),第一个括号值是6,第二个值是7,第三个值是8,最后i=8;
三个8相加等于24;不知道是不是这样。{:10_254:} 我也才学5天C,大家错了勿喷{:10_279:} 这个其实是优先级的问题
先算 ++i 完了之后 i 就变成8了
接着算加法就是 i+i+i 就变成24 我记得小甲鱼老师在视频里好像说过这个问题
这个好像是跟编译器优化相关。当编译器对代码进行优化的时候,会对某些代码进行调整,可能调整后就把顺序给变了。不同的编译器执行时可能也会有不同的结果。
你可以查一下汇编后的代码 你这个答案应该是18吧!应该看看符号的优先级,是先算括号里边的
页:
[1]