簡體   English   中英

為什么聲明“cout <<'\\\\\\\\';”沒有失敗?

[英]Why does the statement “cout << '\\\\';” not fail?

源代碼如下。

cout << '\\' << endl;  //OK, output is \  
cout << '\\\\' << endl;  //OK, output is an integer 23644, but why? 

聲明cout << '\\\\\\\\' << endl; 調用類ostream的以下函數。

_Myt& __CLR_OR_THIS_CALL operator<<(int _Val)

我知道寫'\\\\\\\\'這個詞很奇怪,但我不明白為什么它不會失敗。 如何解釋結果?

這是一個多字符文字,類型為int

[lex.ccon] / 2

包含多個c-char的普通字符文字是多字符文字。 包含單個c-char的多字符文字或普通字符文字在執行字符集中無法表示,它是有條件支持的,具有int類型,並具有實現定義的值。

你應該使用"\\\\\\\\" ,這是char const[3] :兩個\\和最后一個NUL字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM