[C语言]int型变量i初始值为2,表达式++i*i++的计算结果为什么是12?
如果按我个人理解,前面算++i后i的值就变为3,后面i++应该先把i原来的值3带进表达式计算出3*3=9,然后i再加一得4,可是实际程序运行出来的结果是3*4=12,我百...
如果按我个人理解,前面算++i后i的值就变为3,后面i++应该先把i原来的值3带进表达式计算出3*3=9,然后i再加一得4,可是实际程序运行出来的结果是3*4=12,我百思不得其解,请大佬指教
展开
2个回答
2020-11-18
展开全部
可能和编译器有关,编译时入栈顺序的问题。
windows vs2010下测试,你的理解是对的
int main()
{
int i;
i =2;
int dd = ++i+i++;
printf("dd = %d i = %d\n",dd,i);
i =2;
int ww = ++i*i++;
printf("ww = %d i = %d\n",ww,i);
}
运行结果
2020-11-18 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
关注
展开全部
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!我支持答案C
我看过VC++汇编后的程序;
用VC++编译器会得到15,是因为vc++编译器会编译成
先将i加三次,变成5
然后再进行其它运算。
我不知道c++标准是怎么定义这个问题的,也不知道别和编译器怎么编译。
但不要用VC++6.0运行这个代码,因为VC++6.0编译出来是错的,用VC++2008可以;非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
我看过VC++汇编后的程序;
用VC++编译器会得到15,是因为vc++编译器会编译成
先将i加三次,变成5
然后再进行其它运算。
我不知道c++标准是怎么定义这个问题的,也不知道别和编译器怎么编译。
但不要用VC++6.0运行这个代码,因为VC++6.0编译出来是错的,用VC++2008可以;非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
追问
您好,请看清我的问题,我问的是++i*i++,不是三个++i相加
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询