我正在尝试查找有关C++中shift大小类型的信息。例如:
int x = 1;
char char_var = 1;
short short_var = 1;
int int_var = 1;
long long_var = 1;
long long long_long_var = 1;
x = x << char_var; // works
x = x << short_var; // works
x = x << int_var; // works
x = x << long_var; // works
x = x << long_long_var; // works
那么C++将哪种类型用于移位大小? 最佳答案
在[expr.shift] / 1中进行了解释:(N4860)
与大多数其他二进制运算符不同,不会执行常规的算术转换。 integral promotions表示在您的示例中,类型char
和short
的操作数被提升为int
(在正常系统上),而其他未更改。