我想用下面的函數以二進制模式打印的整數倍:如果我通過-1到它以負數作爲參數的print_binary函數有什麼問題?
#include <stdio.h>
void print_binary(int n)
{
int i = 0;
for (i = sizeof(n)*8 - 1; i >= 0; i--)
{
printf("%d", ((n & ((1 << (i + 1)) - 1)) >> i) ? 1 : 0);
}
}
的main.c
int main(int argc, char *argv[])
{
printf("%d in binary:\n", atoi(argv[1]));
print_binary(atoi(argv[1]));
printf("\n");
printf("%d in hex: 0x%x\n", atoi(argv[1]), atoi(argv[1]));
return 0;
}
,輸出不正確,什麼是錯誤的?
-1 in binary:
01111111111111111111111111111111
-1 in hex: 0xffffffff
是什麼導致最重要的位變成0?
你粘貼的程序,逐字,可能導致[段錯誤](http://ideone.com/lR4wx) –
你應該運行它與參數 –