простой вопрос на C

1

У меня есть этот фрагмент кода

char    *str = "123";
if(str[0] == 1) printf("Hello\n");

почему я не могу получить мой Hello заблаговременно! как именно компилятор делает это сравнение if(str[0] == 1)?

Теги:
ascii
comparison

9 ответов

14
Лучший ответ

Вы хотите сделать это:

if (str[0] == '1') ...

Разница в том, что вы сравниваете str[0] с номером 1, а мой код выше сравнивает str[0] с символом '1' (который имеет значение ASCII 49). Не все языки программирования трактуют символы и числа взаимозаменяемо таким образом, но C делает.

Обратитесь ASCII для получения дополнительной информации о том, как компьютеры сопоставляют номера символам.

8

Сначала правильный способ сделать это:

if(str[0] == '1')

Или:

if(str[0] == 49)


Во-вторых, вы должны позаботиться о разнице между 1 и '1'

  • 1 - целочисленное значение...
  • '1' - символ, ASCII равен 49

Это означает: ('1'==1) false!

Однако ('1'==49) истинно!!

Когда вы пишете '1' в C/С++, он автоматически указывается в соответствующем ASCII 49, то есть как '1' фактически представлен в C/С++

  • 0
    как именно компилятор делает это сравнение?
  • 0
    Пожалуйста, посмотрите на редактирование
Показать ещё 1 комментарий
2

* str - тип указателя char var... который хранит базовый адрес строки .str [0] содержит первый char..., который равен 1, а также это char.. так что я обозначается символом '1'...

попробуйте следующее:

if(str[0] == '1')
    printf("Hello \n");
2

Это связано с тем, что вы сравниваете первый символ str с номером 1. Фактический код символа '1' равен 49. Таким образом, любой из них будет работать:

if (str[0] == '1')

if (str[0] == 49)

Помните, что 1 не совпадает с '1'. Первое - это число, второе - символ. Если вы хотите узнать больше об этом, вы должны, вероятно, посмотреть здесь: http://en.wikipedia.org/wiki/Character_encoding

1

попробуйте этот...

if(str[0] == '1')
    printf("Hello \n");
1

используйте это == >

if(str[0] == '1')
    printf("Hello \n");
1

вы сравниваете char с int, это должно быть

if(str[0] == '1')
1

Попробуйте использовать if(str[0] == '1') вместо сравнения с 1, что означает одно и true в C:)

1

вам нужно спросить

* str = "123"; if (str [0] == '1') printf ( "Hello\n" );

Смотрите эти одиночные кавычки вокруг 1? Вам нужно сравнить символ, и вы сравниваете целое число.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню