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

时间:2016-11-12 07:48:57

标签: c++ c bit

我在visual studio 2008中运行简单的程序。它给出了2个结果,如下所示。 请帮助我知道为什么在第一种情况下它给出结果= 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

1 个答案:

答案 0 :(得分:4)

关于运算符优先级的全部内容:

for(int i = 0, j = 0;i<3;i++, j+=3){
    realtime[i] = ((time[j]-'0')*10+(time[j+1]-'0');
                   //      ^^^^               ^^^^^
}

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