我在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
答案 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