gpt4 book ai didi

c - 下面的代码在 C 语言中是如何计算的?

转载 作者:行者123 更新时间:2023-11-30 21:46:18 25 4
gpt4 key购买 nike

#include <stdio.h>

int main()
{
char *p="hello";
char *p1;
p1=p;
while(*p1!='\0')
++*p1++;

printf("%s\t%s",p,p1);
}

输出应该是什么?代码是如何评估的?输出应该是 ifmmp 还是运行时错误?

最佳答案

当您修改 main 正文中的字符串文字时,您正在调用未定义的行为:

char *p = "hello";
char *p1;

p1 = p;
while (*p1 != '\0')
++*p1++; // Undefined behavior

声明如下:

++*p1++;

等同于:

++(*(p1++));

它可以写成两条语句:

++(*p1);  // increase *p1 by one
p1++; // increase p1 by one

如果您希望输出为 ifmmp (即每个字母都被下一个字母替换),则更改:

char *p = "hello";

与:

char p[] = "hello";

关于c - 下面的代码在 C 语言中是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31388721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com