我一直在给出下面的任务来解释3个语句中发生了什么,但我无法弄清楚。在语句中添加1到字符串文字的区别
cout << ("hello" + 1); // ello
cout << (*"hello") + 1; // 105
cout << (*("hello" + 1)); // e
- 为什么是2号数字,而不是一个角色?
- 确实第一个还有零个字符? (于端线)
我一直在给出下面的任务来解释3个语句中发生了什么,但我无法弄清楚。在语句中添加1到字符串文字的区别
cout << ("hello" + 1); // ello
cout << (*"hello") + 1; // 105
cout << (*("hello" + 1)); // e
*"hello"
给出串,'h'
的第一个字符,char
类型,具有ASCII值104的整数提升规则意味着,加入char
和int
的情况下,char
转换为int
,给出类型为int
的结果。输出int
给出数值。
是的。字符串文字是一个以零字符结尾的数组。给它的地址加1会给出数组第二个字符的指针;数组的其余部分保持不变,所以仍然包含最后的零。
cout << ("hello" + 1); // ello
你递增const char[]
1,让您打印的一切,但第一个字符(直到你遇到空字符
cout << (*"hello") + 1; // 105
取消引用const char[]
这里。第一个字符是h,ASCII码为104
。加一个即可得到105
。
cout << (*("hello" + 1)); // e
与之前相同,您取消引用const char[]
,但这次您首先增加1。
值得注意的是字符串文字是'const char [N]'s。 – chris 2014-08-28 01:42:24
您无法取消引用数组。您取消引用阵列衰减的指针。 – 2014-08-28 01:45:46