Null-terminate string: используйте '\ 0' или просто 0?

Если мне нужно обнулить конец строки, следует ли использовать \0 или просто 0 также достаточно?

Есть ли разница между использованием

char a[5];
a[0] = 0;

и

char a[5];
a[0] = '\0';

Или \0 просто предпочел, чтобы было ясно, что я заканчиваю нуль здесь, но для компилятора это то же самое?

Ответ 1

Используйте '\ 0' или просто 0?

Нет никакой разницы в стоимости.
В C нет разницы в типе: оба значения int.
В С++ у них разные типы: char и int. Таким образом, край переходит к '\0', поскольку нет преобразования типа.

Различные руководства по стилю продвигают друг друга. '\0' для ясности. 0 из-за отсутствия помех.

Правильный ответ: Используйте стиль, основанный на стандартах/рекомендациях группового кодирования. Если у вас нет такого руководства, сделайте это. Лучше использовать его, чем иметь расходящиеся стили.

Ответ 3

'\0' точно совпадает с 0, несмотря на тип. '\0' - это просто представление как литерал char. Тип char может быть инициализирован из простых int литералов.

Так что на самом деле невозможно сказать, что лучше, просто имейте в виду использовать его последовательно в своем коде.

Ответ 4

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

Ответ 5

Это то же самое. Посмотрите на таблицу ascii.

Лучше с моей точки зрения использовать '\ 0', потому что вы говорите, что конец строки.

Это помогает, когда вы читаете свой код (например, используя NULL для указателя вместо 0).