scanf的資料格式問題
#include <stdio.h>#include <stdlib.h>
main()
{
signed long int a;
scanf("%d", &a);
printf("a=%d\n", a);
system("pause");
}
執行結果:
4294967295
a=-1
請按任意鍵繼續 . . .
============================
#include <stdio.h>
#include <stdlib.h>
main()
{
signed long int a;
scanf("%u", &a);
printf("a=%d\n", a);
system("pause");
}
執行結果:
4294967295
a=-1
請按任意鍵繼續 . . .
大家好,請問我在scanf上一個用%d , 一個用 %u,可是為什麼最後a的結果都會是 -1呢?
%d => 不是應該表示有號長整數
%u => 不是應該表示無號長整數
我知道4294967295這個數字對於變數a(有號長整數)是溢位,會捨去較高的位元最後為-1,
但是scanf 那邊使用%d , %u 都沒有影響嗎?