C++ 如何理解以下C+中的单引号和双引号术语+;?

C++ 如何理解以下C+中的单引号和双引号术语+;?,c++,C++,请帮助我了解以下内容: cout<<'a'; //prints a and it's okay but cout<<'ab'; //prints 24930 but I was expecting an error due to term 'ab' having two character in single quote cout<<'a'+1; //prints 98 cout<<"ab"; // prints ab and it's okay

请帮助我了解以下内容:

cout<<'a'; //prints a and it's okay but
cout<<'ab'; //prints 24930 but I was expecting an error due to term 'ab' having two character in single quote
cout<<'a'+1; //prints 98 
cout<<"ab"; // prints ab and it's okay but
cout<<"ab"+1; // prints b, why?
cout<<"a"+1; // prints nothing ?
cout<<'a'+'b'; // prints 195 ?
cout<<"a"+"b"; // gives error ?

cout
'a'
是C++中的
char
类型
std::cout
overloads
听起来像是可以使用a的
“ab”+1
“a”+1
大小写是指针算术:将指针向前推进一个,使其从第二个字符开始,或者在第二个大小写中从字符串nul字符的结尾开始。在最后一种情况下,不能像在C++中那样连接字符串,也不能像在一个指针上添加一个int那样向指针添加指针。ascii中
'a'
的值是
97
(对于
'b'
,则是
98
)。这就解释了
'a'+1
'a'+'b'
'ab'在C++中没有定义的含义,但一些编译器允许它。它的意思取决于编译器。@john--
'ab'
是一个。每个编译器都允许它。它的价值是由实现定义的。