【发布时间】:2015-09-22 20:50:13
【问题描述】:
我正在尝试在 long long unsigned x 中设置最高有效位。 为此,我正在使用这行代码:
x |= 1<<((sizeof(x)*8)-1);
我认为这应该可行,因为 sizeof 以字节为单位给出大小,所以我乘以 8 并减去 1 来设置最后一位。每当我这样做时,编译器都会发出以下警告:“警告:左移计数> =类型宽度”
我不明白为什么会出现这个错误。
【问题讨论】:
-
不要使用幻数。 C 中的 byte/
char可以有超过 8 位。将8替换为CHAR_BIT。
标签: c bit-manipulation