Окончание строки - 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
.
Ответы
Ответ 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", когда вы имеете в виду, что ваша переменная является символом.