C++中字符串字面值和字符相加 |
您所在的位置:网站首页 › 字符和字符相加什么意思 › C++中字符串字面值和字符相加 |
string s = “aa”+‘a’; 这个定义的s的值是空的(“”); "aa" 是元素为 char 类型的数组,在表达式中隐式转换为指针, 'a' 的类型是 char,这是个整数类型——以上是C++的规定 指向数组首元素(或者说第0个元素)的指针加上整数N,结果就是指向数组第N个元素的指针。——如果数组没有N个元素,结果是未定义的,然而编译器不一定能检查出这种情况 对于 const char* 和 char 间的加法运算,结果是一个 const char* 类型的值。 string 类有一个构造函数接受 const char* 类型的值(因此可以用字符串字面量初始化 string 对象),但它无法判断传入的值是不是合法的。所以虽然产生了未定义的结果,但刚好能被这个构造函数接受,从而构造出 string 对象——然而归根结底,这是不合法的,只是编译器没能检查出来而已
string s1 = s2 + "aa"; //ok string s1 = s2 + s3; //OK |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |