У меня есть этот фрагмент кода
char *str = "123";
if(str[0] == 1) printf("Hello\n");
почему я не могу получить мой Hello
заблаговременно!
как именно компилятор делает это сравнение if(str[0] == 1)
?
Вы хотите сделать это:
if (str[0] == '1') ...
Разница в том, что вы сравниваете str[0]
с номером 1, а мой код выше сравнивает str[0]
с символом '1'
(который имеет значение ASCII 49). Не все языки программирования трактуют символы и числа взаимозаменяемо таким образом, но C делает.
Обратитесь ASCII для получения дополнительной информации о том, как компьютеры сопоставляют номера символам.
Сначала правильный способ сделать это:
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/С++
* str - тип указателя char var... который хранит базовый адрес строки .str [0] содержит первый char..., который равен 1, а также это char.. так что я обозначается символом '1'...
попробуйте следующее:
if(str[0] == '1')
printf("Hello \n");
Это связано с тем, что вы сравниваете первый символ str
с номером 1. Фактический код символа '1'
равен 49. Таким образом, любой из них будет работать:
if (str[0] == '1')
if (str[0] == 49)
Помните, что 1
не совпадает с '1'
. Первое - это число, второе - символ. Если вы хотите узнать больше об этом, вы должны, вероятно, посмотреть здесь: http://en.wikipedia.org/wiki/Character_encoding
попробуйте этот...
if(str[0] == '1')
printf("Hello \n");
используйте это == >
if(str[0] == '1')
printf("Hello \n");
вы сравниваете char с int, это должно быть
if(str[0] == '1')
Попробуйте использовать if(str[0] == '1')
вместо сравнения с 1
, что означает одно и true в C:)
вам нужно спросить
* str = "123"; if (str [0] == '1') printf ( "Hello\n" );
Смотрите эти одиночные кавычки вокруг 1? Вам нужно сравнить символ, и вы сравниваете целое число.