2016-11-12 3 views
-1

Angenommen, Sie eine Zeichenfolge wie zB haben char str[10] und Sie vergleichen können, sagenCharakter Vergleich geschieht Arbeit in C

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

wie sie vergleichen zu können, hat der Compiler den Charakter in ihre ASCII konvertiert? Möchten Sie das, wie Charakter-Vergleich geschieht in C.

+0

Der 'char' Typ kann in ein 8-Bit-int umgewandelt werden. Der Vergleich ist also wie beim Vergleich von normalem 'int'. –

+0

Zeichen sind auf ganze Zahlen umgewandelt, die den ASCII-Wert des char – antlersoft

+4

haben Nein, es gibt keine Konvertierung, sie sind * bereits * ASCII-Codes (vorausgesetzt, Ihre Implementierung ASCII verwendet). –

Antwort

1

wissen, ob ich

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"); } 

sagen, es

119 111 
it is greater 

druckt Aber es gibt nichts „Magie“ geht hier vor, und es gibt auch keine speziellen Konvertierungen. In C wird ein Zeichen einfach durch eine kleine ganze Zahl gibt den Wert des Zeichens in der Maschine Zeichensatz dargestellt, die für alle Absichten und Zwecke können wir ASCII sein annehmen (oder vielleicht seine Obermenge, Unicode). Und wie jede ASCII-Chart werden Ihnen sagen, 'o' 111 und 'w' ist 119.

+1

Unter der Annahme, dass ASCII beleidigend, aber nicht riskant ist, vorausgesetzt Unicode ist wahrscheinlich falsch, besonders wenn 'char' standardmäßig markiert ist. – chqrlie