gpt4 book ai didi

c++ - 在 C++ 中求和 1<<2 和 1<<3 时出现奇怪的输出

转载 作者:行者123 更新时间:2023-12-02 08:28:19 24 4
gpt4 key购买 nike

所以我只是尝试用 C++ 进行一些位操作。这是我尝试过的:

int a = 1<<2;
cout<<a;

输出为 4

int a = 1<<3;
cout<<a;

输出为 8

但是当我这样做时:

int a = 1<<2 + 1<<3;
cout<<a;

它给出的输出为64。为什么会这样?

我也尝试过:

int a = 1<<2;
int b = 1<<3;
cout<<a + b;

这会按预期输出 12

最佳答案

这是因为加法的运算符优先级高于移位运算符。换句话说,您的第二个示例相当于 1 << (2 + 1) << 3

此外,由于位移是左关联的,因此它与(1 << (2 + 1)) << 3相同。 。这简化为 8 << 3 ,即64 .

关于c++ - 在 C++ 中求和 1<<2 和 1<<3 时出现奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58354730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com