Подтвердить что ты не робот

Окончание строки - char c = 0 vs char c = '\ 0'

При завершении строки мне кажется, что логически char c=0 эквивалентно char c='\0', так как байт "null" (ASCII 0) 0, но обычно люди обычно делают '\0'. Является ли это чисто из предпочтений или лучше ли это "практикой"?

Какой предпочтительный выбор?


EDIT: K & R говорит: "Символьная константа '\0' представляет символ со значением 0, нулевой символ. '\0' часто записывается вместо 0, чтобы подчеркнуть характерный характер некоторого выражения, но числовое значение - это просто 0.

4b9b3361

Ответ 1

http://en.wikipedia.org/wiki/Ascii#ASCII_control_code_chart

Binary   Oct  Dec    Hex    Abbr    Unicode  Control char  C Escape code   Name
0000000  000  0      00     NUL     ␀       ^@            \0              Null character

Нет никакой разницы, но более идиоматический - '\0'.

Возможно, это означает, что char c = 0; может означать, что вы намереваетесь использовать его как число (например, счетчик), хотя лично я не сталкивался с подобным кодом. '\0' недвусмыслен.

Ответ 2

'\0' является просто символом ASCII. То же, что и 'A', или '0' или '\n'
Если вы пишете char c = '\0 ', это то же самое, что и char c = 0;
Если вы пишете char c = 'A', это то же самое, что и char c = 65

Это просто представление символа, и это хорошая практика, чтобы написать его, когда вы действительно имеете в виду NULL байт строки. Поскольку char находится в C один байт (целочисленный тип), он не имеет особого значения.

Ответ 3

Предпочтительным выбором является то, что может дать людям, читающим ваш код, возможность понять, как вы используете свою переменную - как число или как символ. Лучшей практикой является использование 0, когда вы имеете в виду вашу переменную как число и использовать "\ 0", когда вы имеете в виду, что ваша переменная является символом.