ここで何が起きてるの?
#include <stdio.h>
int main (void)
{
int x = 'HELL';
printf("%d\n", x);
return 0;
}
版画1212501068
コンパイルエラーが予想されました。
説明は大歓迎です=)
ここで何が起きてるの?
#include <stdio.h>
int main (void)
{
int x = 'HELL';
printf("%d\n", x);
return 0;
}
版画1212501068
コンパイルエラーが予想されました。
説明は大歓迎です=)
1212501068
16 進数では0x48454c4c
.
0x48
の ASCII コードですH
。0x45
の ASCII コードですE
。0x4c
の ASCII コードですL
。0x4c
の ASCII コードですL
。この動作は実装定義であるため、移植性がないことに注意してください。優れたコンパイラは次のような警告を出します:
$ gcc test.c
test.c: In function 'main':
test.c:4:11: warning: multi-character character constant [-Wmultichar]
C では、一重引用符を使用して文字を表し、メモリ内では数字で表されます。複数の文字を一重引用符で囲むと、コンパイラはプロセスを文書化する限り、必要に応じてそれらを 1 つの値に結合します。
あなたの番号を見ると、1212501068 は 0x48454C4C です。この数値をバイトに分解すると48
、「H」45
または「E」と 2 回4C
または「L」が得られます。