int x;
scanf("%d",&x);
printf("%d",x);
Input: . (just a period)
Output: 4096
ここで 4096 を出力するのはなぜですか。これが私が考えていることです: したがって、ピリオドの ASCII 値は 46 です。入力時に、46 のビット パターンとして x を読み取りますか? そして、印刷するとき、xのメモリ位置に4バイトを印刷するので、最初のバイトだけが46に対応するビットパターンで埋められ、残りは4096を構成するランダムなものですか? しかし、これは正しくありません。これを行うとどうなるか見てください--
int x;
scanf("%d",&x);
printf("%c",x);
Input: . (period)
Output: (nothing)
Input: 46
Output: . (period)
さらに紛らわしいのは、これを行うときに何が起こっているかです。
int x;
scanf("%c",&x);
printf("%d",x);
Input: . (period)
Output: 4142
Input: 46
Output: 4148
Input: 47
Output: 4148