2016-11-12 1 views
-1

Предположим, что у вас есть строка, как, например, char str[10] и вы сравниваете позволяет, скажемсравнение символов происходит работа в C

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

как они соотносятся, делает компилятор преобразует символ в их ASCII? Хотите знать, как символьного сравнение происходит в C.

+0

Тип 'char' может быть преобразован в 8-битный int. Таким образом, сравнение похоже на сравнение обычного 'int'. –

+0

символы преобразуются в целые числа, которые имеют значение ASCII char – antlersoft

+4

Нет, нет конверсии, они * уже * ASCII-коды (если ваша реализация использует ASCII). –

ответ

1

Если я говорю

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