关于C语言中程序表达式的问题

#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,此结果与集成开发环境有关,不建议深究

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-07

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

    结束

第2个回答  2017-04-07
优先级:括号、等号、乘号、加号本回答被提问者采纳
相似回答