C ++评估顺序:除法与加法

时间:2014-11-24 01:39:31

标签: c++

查看一些工作簿问题,然后一个人要求我找到输出:

#include <iostream>

using namespace std;

int main()
{
    int x, y;
    x = 4;
    y = 1;
    while (x < 5) {
        x = x + y / 3;
        y = y + 1;
        cout << "x = " << x << " " << "y = " << y << endl;
    }
    cout << "the sum of x and y is " << x + y << endl;
}

我的问题是为什么在第一次运行此程序后x = 4。我得到[x = 4 + 1/3]是[x = 5/3]因此3进入5次,余数为2.在第一次运行程序后,程序cout x = 1 y = 2而不是x = 4 y = 2?

1 个答案:

答案 0 :(得分:4)

没有括号。 erg优先级高于添加,ergo:

x = x + y / 3
x = 4 + 1/3

因为1/3被截断为0。

x = 4