C++中字符串字面值和字符相加

您所在的位置:网站首页 字符和字符相加什么意思 C++中字符串字面值和字符相加

C++中字符串字面值和字符相加

2024-07-09 15:03| 来源: 网络整理| 查看: 265



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