【发布时间】:2020-06-18 18:28:52
【问题描述】:
为什么我没有收到类似的警告
不允许负数移位
当我使用以下代码时:
#include <stdio.h>
int main (){
int k = -5;
unsigned int shift = 2;
unsigned ans = (k >> shift);
printf("ans:%u\n",ans);
return 0;
}
【问题讨论】:
-
一般而言,编译器无法警告您代码中的所有可能问题。但是,如果您要说出您使用的是什么编译器,那么有人可能会对在这种情况下如何获得警告提出建议。
-
你在引用谁的“不允许移动负数”?
-
注意 C 标准并没有说移动负数是“不允许的”;它说结果值是实现定义的。
-
谁告诉你c编译器或c语言规则应该警告你???
标签: c compiler-construction bit-shift