musicbug
发表于 2003-2-12 19:04
呵呵,总是贪玩,现在补习C++。
你的主页刚看了,不错。
你办得GMBH?
Mephis
发表于 2003-2-12 19:06
:)
一个梦吧
musicbug
发表于 2003-2-12 19:27
我bebug了半天
i=(++i)+(++i)+(++i);
2+4+4
只有这种可能。
因为i=(++i)+(++i)=6;
理论上等于5,而且如果分别算也会等于5。
你刚才说这个你可以解释" (++a)+(++a)编译得到答案与计算一样"
最初发表由 musicbug
正在思索。
#include<iostream.h>
void main()
{
int i=1,a=0,b=0,c=0;
a=++i;
cout<<"a: "<<a<<endl;
i=1;
b=(++i)+(++i);//这里是6,这是关键。。。
i=1;
cout<<"b: "<<b<<endl;
i=1;
c=(++i)+(++i)+(++i);
cout<<"c: "<<c<<endl;
}
a: 2
b: 6
c: 10
呵呵,这个梦不难。
musicbug
发表于 2003-2-12 19:36
说了半天,我的问题还没有解决呢,呵呵。
忘记问你,你的编译器是什么呢?
Mephis
发表于 2003-2-12 19:39
aber
因为i=(++i)+(++i)=6;
理论上等于5?
aber...ne... erst ++i also i=2
nach mal ++i also i=3
am ende i=3+3=6
deswegen i=6
这是我的理论,因为++i是i在用前先自行加1,又由於括号的优先级相同且大於计算符号,所以先进行自加,然后两者相加,不知道这样解释对不对?
但是三个以上我觉得是3+3+4
Mephis
发表于 2003-2-12 19:39
Microsoft Visual C++ 6.0
musicbug
发表于 2003-2-12 19:51
最初发表由 Mephis
aber
因为i=(++i)+(++i)=6;
理论上等于5?
aber...ne... erst ++i also i=2
nach mal ++i also i=3
am ende i=3+3=6
deswegen i=6
这是我的理论,因为++i是i在用前先自行加1,又由於括号的优先级相同且大於计算符号,所以先进行自加,然后两者相加,不知道这样解释对不对?
※※运算符号得级别最高得。
但是三个以上我觉得是3+3+4
为什么?按照你的说法,应该是4+4+4了,可见是不对得。
Mephis
发表于 2003-2-12 19:55
所以理论和实践得不到同意嘛
那个理论是在一本书上的习题看到的,应该不会错吧
Mephis
发表于 2003-2-12 19:57
你的编译器是??
musicbug
发表于 2003-2-12 21:27
我得也是MS VC6
因为++i是i在用前先自行加1,又由於括号的优先级相同且大於计算符号,所以先进行自加,然后两者相加,
括号得优先级低于++运算符。这一点我是肯定得。
你可以去掉括号再试试 a=++i+ ++i+ ++i;
答案一定是一样得。