我一直在给出以下作业来解释3个陈述中发生的事情,但我无法弄清楚。
cout << ("hello" + 1); // ello
cout << (*"hello") + 1; // 105
cout << (*("hello" + 1)); // e
答案 0 :(得分:6)
cout << ("hello" + 1); // ello
您将const char[]
递增1,因此您可以打印除第一个字符之外的所有内容(直到您点击空字符
cout << (*"hello") + 1; // 105
您在此处取消引用const char[]
。第一个字符是h,带有ascii代码104
。添加一个即可获得105
。
cout << (*("hello" + 1)); // e
与以前相同,你取消引用const char[]
,但这次先加1。
答案 1 :(得分:6)
*"hello"
给出字符串的第一个字符'h'
,类型为char
,ASCII值为104.整数提升规则表示添加{{1 {}}和char
,int
转换为char
,结果为int
。输出int
会给出数值。
是。字符串文字是一个以零字符结尾的数组。在其地址中添加一个给出指向数组的第二个字符的指针;数组的其余部分保持不变,因此最后仍包含零。
答案 2 :(得分:0)
&#34;你好&#34;是const char *
。
为什么2是数字 - &gt; *&#34;你好&#34;将是基地址的值,即h(104)的ascii值,所以104 + 1 = 105
是的,您刚刚指向e
而不是h
。