負の数にビットシフトします。リテラルで負の値をシフトすると[-Wshift-negative-value]警告が表示されるのはなぜですか?
int main(void) {
int count = 2;
printf("%d\n", ~0<<count);
printf("%d\n", ~0<<2); // warning:shifting a negative signed value is undefined [-Wshift-negative-value]
return 0;
}
整数リテラルは、変数が使用されるときシフトしないで使用した場合、警告がコード上にコンパイル上に来ているなぜ疑いがあります。
彼はなぜ '〜0 << 2'という警告が出るのかと尋ねていますが、'〜0 << count'はしません。 –
@ChristianGibbonsええ、それを得ました。少し遅すぎた –
おそらく 'count'は' 0 'になる可能性があります –