这里到底发生了什么?a << -5显然,它不正确地移动。但是我正在读的书说: 在一台机器上,该表达式实际上向左移27位我的问题是;为什么?是什么导致左移27位?当换挡计数为负时,到底发生了什么?谢谢。 最佳答案 右侧的负整数是C语言中未定义的行为。ISO 9899:2011 6.5.7按位移位运算符: 对每个操作数执行整数提升。结果的类型是提升后的左操作数的类型。如果右操作数的值为负或大于或等于提升的左操作数的宽度,则行为是不确定的。