2011-06-16 35 views
2

我寫下面的程序我的程序打印一些arbit ASCII字符串

int main() 
{ 
char a=0xf; 
a=a+1; 
printf("%c\n",a); 
} 

上述程序的輸出是什麼,我不能夠understand.It是給我的一些特性而我不能understand.Is有可能找到我在上述程序中獲得的字符的ASCII碼,以便我瞭解它打印的是什麼。

編輯

基於我讀我這進一步增加了我的困惑

如果我寫的聲明如下

焦炭CH =「Z」的答覆;

然後什麼將被存儲在CH,

1)字符Ž
2)Z的ASCII值
3)用單引號
4)兩者(1)和(2向Z )

回答

1

從0到31個字符是一些非打印字符(在你的情況下,你選擇了0xF,十進制數爲15)。許多晦澀的是爲teletypes和其他古代設備而設計的。改爲嘗試從32到126的字符。詳情請參閱http://www.asciitable.com

迴應你的第二個問題,字符存儲十進制值90(因爲字符實際上是1字節整數)。 'Z'只是表示Z是作爲一個字符而不是一個變量。

0

它打印字符0x10(16)。

如果你想輸出,打印更改輸出值(在這種情況下,字符,十六進制值,十進制值):

printf("%c - %x - %d\n", a, a, a);

2

16(0x0f + 1 = 0x10)的ASCII值是DLE (data link escape),它是不可打印的字符。 就像這樣打印整數。

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

我想知道你是怎麼得出這樣的語句16(爲0x0F + 1) – 2011-06-16 05:36:59

+0

@Registered用戶:'0x0f'是15十進制和添加一個到它是在十六進制16 0R爲0x10。 0x意味着十六進制 – 2011-06-16 05:40:00

+0

感謝清除。 – 2011-06-16 05:47:49

1

您可以修改你的程序那樣:

int main() 
{ 
    char a=0xf; 
    a=a+1; 
    printf("Decimal:%u Hexa:%x Actual Char:|%c|\n",a,a,a); 
} 

printf的可以使用不同格式的字符。

+0

我讀了你的東西我是C新手,因此試圖理解它,如果a = 0xf那麼a = a + 1將如何工作? – 2011-06-16 05:40:36

+0

它會將1加1。當前值是六進制的0xf,意味着十進制的十進制或01111的二進制形式。當加1時,新值將會(如現在沒有溢出一樣)16 = 0x10 = 0b10000。它會嘗試打印相應的ascii字符(然後可以檢查一個ascii表) – Bruce 2011-06-16 05:43:39

+0

@註冊的char是1個字節的整數,您可以對它們執行算術運算 – jonsca 2011-06-16 05:44:29

0
#include<stdio.h> 

int main()  
{ 

    char a='z';     \\\ascii value of z is stored in a i.e 122 

    a=a+1; \\\a now becomes 123 

    printf("%c",a); \\\ 123 corresponds to character '{' 

} 
相關問題