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

C++ order of evaluation: division vs addition

本文关键字:除法 评估 顺序 C++      更新时间:2023-10-16

浏览一些工作簿问题,有人要求我找到这个的输出:

#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。程序在第一次运行后不会是 x = 1 y = 2 而不是 x = 4 y = 2 吗?

没有括号。除法的优先级高于加法,因此:

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

因为 1/3 被截断为 0。

x = 4