C++评估顺序:除法与加法
C++ order of evaluation: division vs addition
浏览一些工作簿问题,有人要求我找到这个的输出:
#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
相关文章:
- std::condition_variable::wait()如何评估给定的谓词
- c++11评估顺序(未定义的行为)
- 在除法中不需要四舍五入
- 在TFHE(完全快速同态加密)上执行除法
- 使用 int 表示浮点除法 C++
- 如何使用"equal to"以外的评估编写开关语句
- 嵌套 if 中没有返回评估
- 懒惰的参数评估try_emplace?
- 而循环:简单的除法程序输出零,不明白为什么
- 在实践中,在运行时为零的乘法中是否有任何"lazy"评估
- 余数除法和不允许除以零 (c++) 时遇到问题
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- C++17:使用 std::optional 来评估枚举是否包含值
- CNTK:->转发或 ->评估某些电脑上的崩溃,而不是其他电脑上的崩溃
- ConstexPR :GCC比Clang更努力地评估ConstexPR
- C++:Constexpr斐波那契数列评估
- C++能保证论点评估的原子性吗?
- 在编译时评估函数开销的通用方法
- 如何确定涉及 C++ 中除法的算术表达式的数据类型
- C++评估顺序:除法与加法