寫下面的代碼給我奇怪的答案奇怪的結果在C
#include <stdio.h>
int main (void)
{
char a=0x03 ,b=0x01 ,x;
printf("Enter two numbers : \n");
scanf("%c %c",&a,&b);
printf("0x%x 0x%x\n",a,b);
printf("0x%x || 0x%x = 0x%x \n0x%x^0x%x = 0x%x\n0x%x << 0x%x = 0x%x\n0x%x >> 0x%x = 0x%x\n",a,b,a||b,a,b,a^b,a,b,a<<b,a,b,a>>b);
scanf("%i",x);
return 0;
}
這給了我下面的結果
Enter two numbers :
2 3
32 33
0x32 || 0x33 = 0x1
0x32^0x33 = 0x1
0x32 << 0x33 = 0x1900000
0x32 >> 0x33 = 0x0
我不知道爲什麼它採取錯誤的值成a和b 雖然我已經嘗試過使用int並且它運行良好?!
'scanf(「%i」,x);'???加工???? –
是的,如果類型是int – Salahuddin
'scanf(「%i」,地址)',所以它不能工作......它會導致一個「訪問」你可能無法訪問的內存 – ShinTakezou