返回信息流感jio这题应该选c啊。
为什么选d啊。
这是一条镜像帖。来源:北邮人论坛 / cpp / #98632同步于 2019/1/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
小白求助,字符数组与指针
bx873298574
2019/1/22镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
动手实践一下,你就会发现D连编译都过不去(g++ 7.3.0):
【 在 bx873298574 的大作中提到: 】
: [upload=1][/upload]
: 感jio这题应该选c啊。
: 为什么选d啊。
b不对,加法表达式的结果进32 / 64位寄存器,再输出得不到结果'd'
; cout << *sp1 + 3 << endl;
100000f30: 48 8b 45 c8 movq -56(%rbp), %rax
100000f34: 0f be 10 movsbl (%rax), %edx
100000f37: 83 c2 03 addl $3, %edx
100000f3a: 89 d6 movl %edx, %esi
100000f3c: e8 9d 0d 00 00 callq 3485
100000f41: 48 8d 0d 68 00 00 00 leaq 104(%rip), %rcx
100000f48: 48 89 45 d8 movq %rax, -40(%rbp)
100000f4c: 48 89 4d d0 movq %rcx, -48(%rbp)
100000f50: 48 8b 7d d8 movq -40(%rbp), %rdi
; cout << *(sp1 + 3) << endl;
100000f5e: 48 8b 4d c8 movq -56(%rbp), %rcx
100000f62: 0f be 71 03 movsbl 3(%rcx), %esi
100000f66: 48 89 45 c0 movq %rax, -64(%rbp)
100000f6a: e8 8d 0d 00 00 callq 3469
100000f6f: 48 8d 0d 3a 00 00 00 leaq 58(%rip), %rcx
100000f76: 48 89 45 e8 movq %rax, -24(%rbp)
100000f7a: 48 89 4d e0 movq %rcx, -32(%rbp)
100000f7e: 48 8b 7d e8 movq -24(%rbp), %rdi
【 在 nuanyangyang 的大作中提到: 】
: 感觉bc都对。但原因不同。b是字母a往后三个字母,如果使用ascii的话就是d;c就是打印下标为3的元素了。