位操作符的优先级对输出的影响

Impact of precedence of bit manipulation operator on output

本文关键字:输出 影响 优先级 操作符 位操作      更新时间:2023-10-16

我在visual studio 2008中运行简单的程序。结果如下所示。请帮助我知道为什么在第一种情况下它给出的结果=1024案例1:

#include<windows.h>
#include<iostream>
using namespace std;
int main()
{
    int i =4;
    k = i<<3 + i<<1;
    cout<<"Result "<<k;
    return 0;
}

输出1024

case2:
    int j=0;
    j=i<<3;
    int n = i<<1;
    k = j+ n;
    cout<<"Result "<<k;

输出为40

这都是关于操作符的优先级:

i = 4;
k = i << 3 + i << 1;
// is the same expression as: 
k = (4 << (3 + 4)) << 1;

所以4 << (3+4) = 512512 << 1 = 1024