простой вопрос на C - PullRequest
       28

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

1 голос
/ 06 июня 2010

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

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

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

Ответы [ 9 ]

14 голосов
/ 06 июня 2010

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

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

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

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

8 голосов
/ 06 июня 2010

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

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

Или:

if(str[0] == 49)


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

  • 1 - целочисленное значение ...
  • '1' - это персонаж, чей ASCII равен 49

Что означает: ('1'==1) ложно !!

Однако ('1'==49) верно !!

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

2 голосов
/ 27 ноября 2015

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

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

if(str[0] == '1')
    printf("Hello \n");
2 голосов
/ 06 июня 2010

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

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

if (str[0] == 49)

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

1 голос
/ 17 июля 2016

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

if(str[0] == '1')
    printf("Hello \n");
1 голос
/ 21 марта 2016

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

if(str[0] == '1')
    printf("Hello \n");
1 голос
/ 06 июня 2010

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

1 голос
/ 06 июня 2010

нужно спросить

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

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

1 голос
/ 06 июня 2010

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

if(str[0] == '1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...