2016-03-02 100 views
11

如果我需要空字符串終止,我應該寧願使用\0還是簡單的0也足夠了?空終止字符串:使用' 0'還是隻有0?

是否有使用

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

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

或者是\0只是最好說清楚,我是空的結束位置之間的任何差別,但對於編譯器它是相同?

+6

對於C++,只需使用'std :: string'並忘記C字符串。 – crashmstr

回答

8

使用'\ 0'或只是0?

價值沒有差異。
在C中,類型沒有區別:都是int
在C++中它們有不同的類型:charint。所以邊緣去'\0'因爲沒有涉及類型轉換。

不同風格指南推動一個在另一個。爲清晰起見,請參閱'\0'0缺乏雜亂。

正確答案:根據您的團隊編碼標準/指導原則使用樣式。如果你的團隊沒有這樣的指導方針,那就製作一個。更好地使用一個比有不同的風格。

7

'\0'0完全一樣,儘管類型。 '\0'只是表示爲char文字。雖然類型char可以從普通文字int初始化。

所以實際上不可能說出哪些更好,只要記住在代碼中一致地使用它。

+0

詳細信息:在C中,「\ 0」更適合稱爲_character constant_。只有文字C指定的是_string literal_和_compound literal_。 – chux

+3

注意:在C中,像''\ 0''這樣的字符常量的類型是'int',而不是'char'。 –

1

這是一回事。看看ascii表。

從我的角度來看,使用'\ 0'會更好,因爲您明確指出字符串的結尾。

這有助於當你讀你的代碼(如使用空指針而不是0)。

+2

_「看看ascii表。」_ EBCDIC字符表呢?這仍然是真的嗎? –

6

兩者都將產生相同的機器代碼,如0將被轉換爲字符值0,和'\0'是書寫字符值0的另一種方式。後者顯然是一個角色,所以它會表明你並不意味着寫'0',但除此之外,它最終是完全一樣的東西。

+2

注意:在C中,像''\ 0''這樣的字符常量的類型是'int',而不是'char'。 –

相關問題