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;
答案一定是一样得。
页: 1 2 3 [4] 5
查看完整版本: 很奇怪的错误,我怎么都看不出来,高手指点一把,不胜感激!!!