【发布时间】:2021-10-04 23:04:01
【问题描述】:
cout<<"#" + 'a'<<endl;
string s = "#";
s += 'a';
cout<<s<<endl;
在"#" + 'a' 的情况下,我无法弄清楚类型转换是如何工作的
【问题讨论】:
-
“在
"#" + 'a'的情况下,类型转换是如何工作的” -"#" + 'a'生成一个指针算术计算,你肯定会不 想要。 -
"#" + 'a'是未定义的行为,输出可以是任何东西。 -
"#"是const char[2]({'#', '\0'}) 衰减为const char*。 -
@TusharGupta 你把“c++ 指针算法”放在任何搜索引擎中,你就会有几个小时的阅读材料。
-
感谢@Jarod42 和我现在知道的所有人。我正在添加一个
char* to a char,它被强制转换为int。所以基本上我在做char* + int。因此奇怪的输出。