我正在尝试查找有关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表示在您的示例中,类型charshort的操作数被提升为int(在正常系统上),而其他未更改。

10-08 11:54