为什么声明“cout<< '\\\\';“没有失败?

时间:2016-04-08 09:23:22

标签: c++ string visual-c++ char cout

源代码如下。

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)

我知道编写表达式'\\\\'很奇怪,但我不明白它为什么不会失败。如何解释结果?

1 个答案:

答案 0 :(得分:15)

这是一个多字符文字,类型为int

[lex.ccon]/2

  

包含多个c-char的普通字符文字是多字符文字。包含单个c-char的多字符文字或普通字符文字,在执行字符中无法表示   set,有条件地支持,类型为int,并且具有实现定义的值。

你应该使用"\\\\"char const[3]:两个\和最后一个NUL字节。