Мы можем очистить вышеупомянутую проблему в двух разных понятия C
- ОБРАБОТКА если (условие) в C
- Разница символов & Строковые литералы в C
1. Работа if (условие) в C if (состояние)
В языке C, если условие работает на базе 0 (нуль) и без нуля.
Если результатом данного условия является нуль, то C считает, что данное условие является ложным.
Если результатом данного условия является Non-Zero, то C считает, что данное условие истинно.
2. Отличие символов & строковые литералы в C
В C, строковые литералы являются те, которые заключены в двойные кавычки («»), в то время как Символьные литералы являются те, которые заключены в одинарные котировки метки ('') и минимальная длина - один символ, а максимальная длина - два символа.
Еще один важный момент в том, что в C, если мы преобразуем '\ 0' (null) в int (Integer), тогда мы получим 0 (Zero), в то время как мы не можем преобразовать «\ 0» в int неявно или явно , Потому что «\ 0» - это строка, а «\ 0» - символ.
И в соответствии с строкой IF условия рабочей логики, если условие возвращает 0 или false, это означает, что условие является ложным; в случае, если условие возвращает ненулевое значение, это означает, что условие истинно.
Таким образом, в соответствии с пунктом 1 и 2, наконец, мы можем заключить, что
если ('\ 0') Е ("\ '\ 0 \' = ложь! \ П"); // условие становится ложным
if ("\ 0") printf ("\" \ 0 \ "! = false \ n"); // условие становится истинным
Первый является * NUL-символ *, вторая * пустая строка *. –
потому что они разные вещи, почему они оценивают одинаково? – njzk2
И почему вы сравниваете строки/символы с булевыми? –