gpt4 book ai didi

c - 如何理解 C 中 printf 语句的行为?

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

我遇到了两个 C 能力问题。

main()
{
int x=4,y,z;
y=--x;
z=x--;
printf("\n%d %d %d",x,y,z);
}

输出:2 3 3(从左到右打印)

main()
{
int k=35;
printf("\n%d %d %d",k==35,k=50,k>40);
}

输出:0 50 0(从右到左打印)

为什么会这样?我在 Stack Overflow 上看到了很多类似的答案。人们回答这是未定义的行为,但如果在面试中提出这个问题,应该如何回答?

最佳答案

C 中任何函数的参数求值顺序没有任何特定顺序。看起来您被问到的平台/编译器可能正在从右到左评估函数参数,这将打印出您获得的结果,但是 C 标准说您不知道顺序,所以这里显示的是什么是未定义的行为,几乎肯定会在不同的编译器或平台上获得不同的结果。

请注意,在您的函数中,所有变量值都在调用 printf() 之前赋值 - 而在您的 main() 中,值被赋值给变量在 printf() 的参数列表中。

关于c - 如何理解 C 中 printf 语句的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50532818/

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