しかし、以下の例では:
#include <stdio.h>
int main(void)
{
int x ='aa';
printf("%d", x);
}
出力が24929
です。
誰でもこの整数値にリテラルがどのように変換されたか説明できますか?
しかし、以下の例では:
#include <stdio.h>
int main(void)
{
int x ='aa';
printf("%d", x);
}
出力が24929
です。
誰でもこの整数値にリテラルがどのように変換されたか説明できますか?
オクテットを使用してintに値を割り当てました。'a'
は0x61
です。
したがって、int x = 'aa'
と書くのは、int x = 0x6161
と同じです。
編集:書き込みはしません。 int x = 0x6161
またはint x = 24929
と書いてください。
ありがとうございます。 – smartnerd
int x = 'aa';
これは有効ですが、x
の値は実装定義です。そしてbtw、これは文字列リテラルではありません。文字列リテラルは "aa"になります。
私たちはそれを何と呼んでも、実際には名前を見つけることができませんでしたので、文字列リテラルを書きました。 – smartnerd
@smartnerd多分、多種の定数 –
2番目の例は正しくコンパイルされません.cは定義されていません。xの初期化が正しくありません。私はあなたが未定義の行動を持っていると思う。 – purplepsycho
コードに文字リテラルはなく、文字リテラルだけです。 –
注:マルチ文字リテラルの値は、実装定義です。 –