#include<stdio.h>
int main()
{
int a,b,c;
int result;
result=a=b=3+c;
result=2;
printf("%d",result=(result=result*2)*6*(result=1+result));
return 0;
}
这个问题printf里面的内容,这个赋值是怎么赋的?我看了好久都看不懂……求大神指导。
①(result=result*2)*6*(result=1+result));//result等于2
②result*6*(result=1+result));//result等于4
③result*6*(result=1+result));//result等于{(1+result)"②时刻的result等于4"},所以result等于5
④result*6*result ;//result等于5
⑤结果为5*6*5等于150
附上VScode编程编译后运行结果
当result*6*(result=3+result))时等于294,可自行验证
发现在VC6.0上运行结果为120,此结果与集成开发环境有关,不建议深究
result=(result=result*2)*6*(result=1+result)
从左到右开始计算,括号优先级最高,优先计算。
计算(result=result*2),既result=2*2=4,整个表达式变成
result=4*6*(result=1+result)
从左到右直接计算4*6=24,整个表达式变成
result=24*(result=1+result)
再计算(result=1+result),既result=1+4=5,整个表达式变成
result=24*5=120
结束