我正在審查按位運算符,並寫了一個簡單的代碼來打印數字的二進制表示,但我有瘋狂的輸出,我沒有解釋它。爲什麼程序不給我正確的二進制數? 下面是示例輸出:打印二進制數給出奇怪的結果
和我的代碼:
#include <stdio.h>
#include <stdlib.h>
void pBinary(int x);
int main(void)
{
for (int n = 0; n < 20; n++) {
pBinary(n);
}
return 0;
}
void pBinary(int x)
{
int y = 1 << 31;
for (int n = 0; n < 32; n++) {
x & y ? putchar('1') : putchar('0');
y >>= 1;
}
putchar('\n');
}
請勿發佈圖片的文字!你的代碼調用_undefined behaviour_,見標準6.5.7。 – Olaf