我不明白else句子的意思是什么。
输出显示*nombre=(*nombre)++
,我认为它将显示"fernando"
,因为总和。但似乎"ffsoboep"
不同于**nombre=(*nombre)+1
我的问题是为什么会这样?在这种情况下“++”运算符是如何工作的。谢谢。
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 - C指针总和“不起作用”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21518933/