gpt4 book ai didi

C 指针总和 "not working"

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:38 25 4
gpt4 key购买 nike

我不明白 else 语句 *nombre=(*nombre)++ 中的重点是什么。

输出显示 "fernando" 而我认为它要显示的是 "ffsoboep" 因为总和。但似乎 *nombre=(*nombre)+1 与 *nombre=(*nombre)++;

我的问题是为什么会这样?在这种情况下,“++”运算符如何工作。谢谢。

void recursiva (char * nombre)
{

if (*nombre != '\0')
{
recursiva(nombre+1);
if(*nombre > 'A' && *nombre < 'Z')
{
*nombre=*nombre | 32;
}
else
{
*nombre=(*nombre)++;
printf("%c \n",*nombre);
}
}
}

int main()
{
char nombre[]="Fernando";
recursiva(nombre);
printf("%s",nombre);
}

最佳答案

(*nombre)++

不是一个意思
*nombre + 1

意思是“返回*nombre的原始值,副作用是*nombre的值增加1”。请注意,*nombre 的值究竟何时增加是相当模糊的;虽然它发生在 (*nombre)++ 的值被计算之后,但它可能发生在分配给 *nombre 之前、之后或期间,结果不可预测。

如果要增加*nombre的值,不需要将(*nombre)++的值赋值回* nombre,事实上,尝试这样做是 undefined behavior .作为第一个近似值,程序可以做任何事情,直到并包括making demons fly out your nose。 .只需使用++:

(*nombre)++;

+= 1:

*nombre += 1;

关于C 指针总和 "not working",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518933/

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