Мы можем решить вышеуказанную проблему в двух разных концепциях C
- Работа if(условие) в C
- Разница символьных и строковых литералов в C
1. Работа if(условие) в C if(условие)
В языке C, если условие работает с 0 (нулем) и ненулевым основанием.
Если результат данного условия равен нулю, то С считают, что данное условие ложно.
Если результат данного условия не равен нулю, то C считают, что данное условие истинно.
2. Разница между символьными и строковыми литералами в C
В C строковые литералы — это те, которые заключены в двойные кавычки («»), а символьные литералы — это те, которые заключены в одинарные кавычки (''), а минимальная длина — один символ, а максимальная длина — два символа.
Еще один важный момент заключается в том, что в C, если мы преобразуем '\0' (null) в int (Integer), то мы получим 0 (Zero), в то время как мы не можем преобразовать "\0" в int неявно или явно. Потому что «\0» — это строка, а «\0» — это символ.
И в соответствии с рабочей логикой строки ЕСЛИ условие, если условие возвращает 0 или ложь, это означает, что условие ложно; если условие возвращает ненулевое значение, это означает, что условие истинно.
Итак, по пунктам 1 и 2 окончательно можно сделать вывод, что
if ('\0') printf("\'\0\' != false\n"); //условие становится ложным
if ("\0") printf("\"\0\" != false\n"); //условие становится истинным
person
Ravi
schedule
02.05.2016
while((dest[i++] = source[i++]));
. Точно не помню, завтра проверю. - person Rahn   schedule 01.05.2016