2016-04-05 11 views
0

は、Cプログラムを考えてみましょう。Cで文字列リテラルを整数に変換するとどうなりますか?出力はASCII値テーブルごととして<code>97</code>です。ここ</p> <pre><code>#include <stdio.h> int main (void) { int x = 'a'; printf("%d", x); } </code></pre> <p>:

しかし、以下の例では:

#include <stdio.h> 

int main(void) 
{ 
    int x ='aa'; 
    printf("%d", x); 
} 

出力が24929です。

誰でもこの整数値にリテラルがどのように変換されたか説明できますか?

+3

2番目の例は正しくコンパイルされません.cは定義されていません。xの初期化が正しくありません。私はあなたが未定義の行動を持っていると思う。 – purplepsycho

+2

コードに文字リテラルはなく、文字リテラルだけです。 –

+4

注:マルチ文字リテラルの値は、実装定義です。 –

答えて

0

オクテットを使用してintに値を割り当てました。'a'0x61です。

したがって、int x = 'aa'と書くのは、int x = 0x6161と同じです。

編集:書き込みはしません。 int x = 0x6161またはint x = 24929と書いてください。

+0

ありがとうございます。 – smartnerd

3

int x = 'aa';

これは有効ですが、xの値は実装定義です。そしてbtw、これは文字列リテラルではありません。文字列リテラルは "aa"になります。

+0

私たちはそれを何と呼んでも、実際には名前を見つけることができませんでしたので、文字列リテラルを書きました。 – smartnerd

+0

@smartnerd多分、多種の定数 –

関連する問題

 関連する問題