2016-11-12 63 views
-1

假設你有一個像如char str[10]一個字符串,你是比較讓,說性格比較碰巧工作用C

if(str[i]>str[i+1]) 
{ 
    // some lines of code 
} 

他們如何比較,該編譯器的字符轉換成它們的ASCII?想知道

+0

'char'類型可以轉換爲8位int。所以比較就像比較普通的'int'。 –

+0

字符被轉換爲具有字符的ASCII值的整數 – antlersoft

+4

否,沒有轉換,它們*已經* ASCII碼(假設您的實現使用ASCII)。 –

回答

1

如何字符比較發生在C.如果我說

char str[] = "Hello, world!"; 
int i = 7; 
printf("%d %d\n", str[i], str[i+1]); 
if(str[i] > str[i+1]) { printf("it is greater\n"); } 

將打印

119 111 
it is greater 

但並沒有什麼「魔法」怎麼回事,有也沒有特別的轉換。在C中,一個字符只是由一個小整數表示,它給出了機器字符集中字符的值,對於我們可以假定的所有意圖和目的,它們都是ASCII(或者它的超集Unicode)。正如任何ASCII圖表會告訴你的,'o'是111,'w'是119.

+1

假設ASCII是濫用,但沒有風險,假設Unicode可能不正確,特別是如果'char'是默認簽名的。 – chqrlie