如果我需要空字符串終止,我應該寧願使用\0
還是簡單的0
也足夠了?空終止字符串:使用' 0'還是隻有0?
是否有使用
char a[5];
a[0] = 0;
和
char a[5];
a[0] = '\0';
或者是\0
只是最好說清楚,我是空的結束位置之間的任何差別,但對於編譯器它是相同?
如果我需要空字符串終止,我應該寧願使用\0
還是簡單的0
也足夠了?空終止字符串:使用' 0'還是隻有0?
是否有使用
char a[5];
a[0] = 0;
和
char a[5];
a[0] = '\0';
或者是\0
只是最好說清楚,我是空的結束位置之間的任何差別,但對於編譯器它是相同?
使用'\ 0'或只是0?
價值沒有差異。
在C中,類型沒有區別:都是int
。
在C++中它們有不同的類型:char
和int
。所以邊緣去'\0'
因爲沒有涉及類型轉換。
不同風格指南推動一個在另一個。爲清晰起見,請參閱'\0'
。 0
缺乏雜亂。
正確答案:根據您的團隊編碼標準/指導原則使用樣式。如果你的團隊沒有這樣的指導方針,那就製作一個。更好地使用一個比有不同的風格。
'\0'
與0
完全一樣,儘管類型。 '\0'
只是表示爲char
文字。雖然類型char
可以從普通文字int
初始化。
所以實際上不可能說出哪些更好,只要記住在代碼中一致地使用它。
詳細信息:在C中,「\ 0」更適合稱爲_character constant_。只有文字C指定的是_string literal_和_compound literal_。 – chux
注意:在C中,像''\ 0''這樣的字符常量的類型是'int',而不是'char'。 –
這是一回事。看看ascii表。
從我的角度來看,使用'\ 0'會更好,因爲您明確指出字符串的結尾。
這有助於當你讀你的代碼(如使用空指針而不是0)。
_「看看ascii表。」_ EBCDIC字符表呢?這仍然是真的嗎? –
'\0'
是一個octal literal與0的值escape sequence所以有他們旁註之間
沒有區別:如果你正在處理字符串比你應該使用std::string
。
兩者都將產生相同的機器代碼,如0
將被轉換爲字符值0
,和'\0'
是書寫字符值0
的另一種方式。後者顯然是一個角色,所以它會表明你並不意味着寫'0'
,但除此之外,它最終是完全一樣的東西。
注意:在C中,像''\ 0''這樣的字符常量的類型是'int',而不是'char'。 –
對於C++,只需使用'std :: string'並忘記C字符串。 – crashmstr