刚刚在一个群里有人指出一个问题,他认为以下代码结果为15
(++i)+(++i)+(++i)
然后我用mingw环境编译了一下,结果是16
#include "iostream.h" int main(){ int i=3; cout<<(++i)+(++i)+(++i)<<endl; return 0; }
拆分以后发现最后i==6
似乎和预想的4+5+6没什么出入,那关键就是前面两个了。
后来我仔细想了想,发现mingw编译器编译的时候把两个i先++了再执行第一个相加操作,也就是5+5+6,过程如下
(++i) //i=4 (++i) //i=5 5+5 //5+5=10 (++i) //i=6 10+(++i) //10+6=16
java是这么理解的
(++i) //i=4 4+(++i) //4+5=9 9+(++i) //9+6=15
然后又有一个小伙伴来了个VS编译的实例,代码一样,不过结果是18
(++i) //i=4 (++i) //i=5 (++i) //i=6 (++i)+(++i)+(++i) //6+6+6=18
所以我劝各位小伙伴们没事不要写这么2B的代码或者拿这种代码去考别人,会挨骂的இ௰இ
本文发布于 https://luojia.me
本站文章未经文下加注授权不得拷贝发布。
本博客使用Disqus评论系统,如果看不到评论框,请尝试爬墙。