2016-11-14 24 views
0

私はCを学び始めていると私は、次のような問題が発生した:配列:異なるコードを出力する同じ行のコードですか?

#include <stdio.h> 
#define T 1 
int G; 

int main(void) 
{ 
    int arr[5] = {7,8,9,10,11}; 
    int a; 

    printf("%d\n", G); 
    printf("%d\n", arr[T]); 
    printf("%d\n", arr[G]); 

    a = arr[T]*arr[G]; 

    printf("%d\n",a); 


    printf("%c", arr[T]*arr[G]); //why is this answer printed differently from a? 

    return 0; 
} 

は、あなたの種類の助けに感謝!

+2

あなたは '%d'と'%c'の違いを知っていますか? –

+0

%cを使用すると、cは整数値に対応するASCIIキーを表示します。したがって、あなたのケースでは、ASCII値56(arr [1] * arr [0]、つまり7 * 8)が返されます。 –

+1

なぜ 'G'に値がありませんか?これは*未定義の動作*です。 – usr2564301

答えて

2

「%c」の文字で印刷しているためです。

これらを試してみてください。そして、

printf("%d", 65); 
printf("%c", 65); 

そしてascii tableを見てください。 そして、printf Format Stringを読んでください。 すべて最高です。

+0

ああ、私は参照してください。どうもありがとうございます!なぜ%cが8を返すのか聞かせてもらえますか? – hexadecimals

+0

アスキーテーブルを見てください。数字56(製品)は文字 '8'に対応しています。 –

1

値を割り当てる前にGを使用していることを考慮すると、何かを印刷する可能性があります。あなたのフォーマットも異なります。

関連する問題