在学习中遇到一个问题,在心中思考了许久,
听人说在不同环境下,结果不同.我就在VC中试了试
今天还是来请教 导师们吧!
在VC6中;
#include<iostream>
using namespace std;
int main()
{
int i=4;
int num=( ++i ) + ( ++i ) + ( ++i ) ;
cout << "num=" << num << endl;
return 0;
}
这时num结果是19,我个人认为是18所以我就又重写了下面的:
#include<iostream>
using namespace std;
int main()
{
int i=4;
int num=( ++i ) ;
cout << "num=" << num<< endl ;
return 0;
}
此时的结果是5;这我明白.在我意料中的,毫无疑问的!
后来我又在加了一项.
#include<iostream>
using namespace std;
int main()
{
int i=4;
int num=( ++i ) + ( ++i ) ;
cout << "num=" << num<< endl ;
return 0;
}
此时的结果是12,我就开始有点高不懂了.
我认为第一个( ++i );后结果是5,那么又来个( ++i )后不就是6了吗?
那结果不就是11吗~
但是问了寝室的一位高手说是,( ++i )后确实是5,第二个( ++i )也是6,
但是此时第一个也就是6,所以6+6=12;
我半信半疑的跑道机房去看看,但是依照他的解释,我的三个( ++i )相加,
也就是
#include<iostream>
using namespace std;
int main()
{
int i=4;
int num=( ++i ) + ( ++i ) + ( ++i) ;
cout << "num=" << num << endl ;
return 0;
}
第一个是5,第二个是6;第三个是7,
那么此时都变成7,即7+7+7=21;
但是结果是19.
当时在学习时不用功,在回顾以前,温习时买了本练习做做,书上的结果也是21
所以我就陷入了思考~~~~
望师哥-师姐-导师们给点指点!!
谢谢!!