2016-11-14 43 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碼作爲整數值。所以在你的情況下它返回56的ASCII值(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

看看ascii表。數字56(它是產品)對應於字符'8'。 –

1

考慮到您在爲它指定值之前使用G,它可以打印任何內容。你的格式也不同。