gpt4 book ai didi

c - Printf 在连续调用中以不同的方式打印相同的变量值,中间没有进行任何操作

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:26 24 4
gpt4 key购买 nike

#include<stdio.h>
#include<conio.h>
int main()
//program start here
{

int i= 655535;
int *p =&i;
printf("p:%d \n*p:%d \n",p,*p);
printf("*p++:%d \n p:%d \n *p:%d \n ++(*p):%d \n p:%d \n",*p++, p,*p, ++*p,p);
printf("p:%d\n", p);
getch();
}

输出:

p:2293620
*p:655535
*p++:655536
p:2293620
*p:655536
++(*p):655536
p:2293620
p:2293624

为什么上面的程序打印最后一个'p'值不同?

最佳答案

*p++

相当于:

*(p++)

所以这改变了p

您的程序调用未定义的行为,因为它在序列点之间修改和访问 p*p,所有这些增量和访问都在第二个 printf 参数列表。在您使用的实现中,所有 p 访问都在增量之前完成,它打印未修改的值。但是,*p 是在增量之后完成的,所以它会打印修改后的值。

关于c - Printf 在连续调用中以不同的方式打印相同的变量值,中间没有进行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421998/

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