我只是想知道在尝试将字符串添加到字符串时发生了什么。
最初,我认为它会像连接一样工作,但它没有:
cout << 'ab' + 'a' << endl;
cout << '' + 'a' << endl;
打印
然而,
cout << 'bla' << endl;
cout << 'ab' + 'a' << endl;
cout << '' + 'a' << endl;
打印
答案 0 :(得分:7)
字符串文字为char const[N]
(衰减到char const *
),char
是小范围整数类型。你在做指针运算。
请求@chris和@Praetorian进行更正。
答案 1 :(得分:1)
将字符串转换为“char *”,然后将“a”(96)的ascii值添加到该字符。您现在正在输出超出字符串末尾的字符。
如果您尝试连接两个字符串,请参阅Append Char To String in C?以获取更多信息。
答案 2 :(得分:1)
请注意,C和C ++中字符串的存储类型为char*
或char[]
。也就是说,C或C ++中的字符串只是一个字符数组(C / C ++中的指针和数组基本相同)。
执行"ab"+'a'
时,“ab”被编译为指向内存中某个固定字符串的指针,并且'a'被编译为其ascii值的整数(96)。然后“ab”是指向内存中字符串位置的指针,当你执行“ab”+“a”时,结果是指向字符串开始后96个字节的位置的指针。 cout
然后尝试打印该位置的任何数据,在这种情况下是不可打印的。
答案 3 :(得分:0)
您正在打印添加字符串和char的内存值的算术结果。