-1

ここで何が起きてるの?

#include <stdio.h>
int main (void)
{
  int x = 'HELL';
  printf("%d\n", x);
  return 0;
}

版画1212501068

コンパイルエラーが予想されました。

説明は大歓迎です=)

4

6 に答える 6

13

121250106816 進数では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]
于 2013-09-07T19:34:53.353 に答える
9

C では、一重引用符を使用して文字を表し、メモリ内では数字で表されます。複数の文字を一重引用符で囲むと、コンパイラはプロセスを文書化する限り、必要に応じてそれらを 1 つの値に結合します。

あなたの番号を見ると、1212501068 は 0x48454C4C です。この数値をバイトに分解すると48、「H」45または「E」と 2 回4Cまたは「L」が得られます。

于 2013-09-07T19:35:44.240 に答える