永发信息网

大虾们看下非常简单的程序y=(++i)+(++i)+(++i);

答案:3  悬赏:20  手机版
解决时间 2021-05-04 20:04
  • 提问者网友:焚苦与心
  • 2021-05-04 05:35

#include <iostream.h>
main()
{
int i,y;
i=1;
y=0;
y=(++i)+(++i)+(++i)+(++i);
cout <<y;
}//这个是在vc6.0下编译的

#include "stdio.h"

main()
{
int i,y;
i=1;
y=(++i)+(++i)+(++i);
printf("%d",y);
}//这个我是在win -tc下编译的

两个的答案都不是9,我就郁闷了,谁能给个确切的解释啊......

最佳答案
  • 五星知识达人网友:封刀令
  • 2021-05-04 05:45

这个C的编译方式有关,


上面一个答案是20,下面的是12


因为在执行y=(++i)+(++i)+(++i);时候,括号在这里具有最高优先级,所有括号里面的表达式先计算,也就是说先执行3个 ++i,这时候i就等于4了,然后才执行加号运算符,也就是y=4+4+4 结果就是12.


上面的也是这道理。

全部回答
  • 1楼网友:醉吻情书
  • 2021-05-04 06:54

这种问题跟编译的环境有关,如果是全国等级考试都以turo c的为标准!!

  • 2楼网友:你可爱的野爹
  • 2021-05-04 06:15

vc 下是这样加的

3+3+4+5所以答案是15

tc很少用

你可以通过输出汇编文件来分析

编译器是如何处理语法的

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯