返回列表 回复 发帖

关于 4.5节《赋值》,示例4-6 引发的问题

本人对原来的代码作了一点点增加:


#include "stdafx.h"
#include <iostream.h>

int main(void)
{
        int x=0;
        int y=0;
        cin>>x;
        cin>>y;

        cout<<"x+y="<<(x+=y)<<endl;
        cout<<"x-y="<<(x-=y)<<endl;
        cout<<"x*y="<<(x*=y)<<endl;
        cout<<"x/y="<<(x/=y)<<endl;
        cout<<"x%y="<<(x%=y)<<endl;
        cout<<"x<<y="<<(x<<=y)<<endl;
        cout<<"x>>y="<<(x>>=y)<<endl;
        cout<<"x^y="<<(x^=y)<<endl;
        cout<<"x=y="<<(x=y=100)<<endl;
        return 0;
}


本人输入 8 和 4,得出的结果非常奇怪,为:

8
4
x+y=12
x-y=8
x*y=32
x/y=8
x%y=0
x<<y=0
x>>y=0

x^y=4
x=y=100

请问为什么跟期望值不一样呢?
我看了程序,没有觉得不正常地方。我根据程序简单的说一下。

cin>>x;                         x=8
        cin>>y;                 y=4

        cout<<"x+y="<<(x+=y)<<endl;   x=x+y=8+4=12
        cout<<"x-y="<<(x-=y)<<endl;    x=x-y=12-4=8
        cout<<"x*y="<<(x*=y)<<endl;   x=x*y=8*4=32
        cout<<"x/y="<<(x/=y)<<endl;    x=x/y=32/4=8
        cout<<"x%y="<<(x%=y)<<endl;   x=x%y=8%4=0
        cout<<"x<<y="<<(x<<=y)<<endl;  x=x<<y=0<<4=0
        cout<<"x>>y="<<(x>>=y)<<endl;  x=x>>y=0>>4=0
        cout<<"x^y="<<(x^=y)<<endl;    x=x^y=0^4=4
        cout<<"x=y="<<(x=y=100)<<endl; x=y=100


如果你对其中那一个部分不清楚,你提出来。我具体给你说一下。
2# fwbook


谢谢解答!现在明白了!是我自己理解错误。我没留意x会保留前值。
3# moorwindmill


哦。以后有问题,可以直接在论坛中提出。
返回列表