gpt4 book ai didi

c - C 程序中的意外结果

转载 作者:太空狗 更新时间:2023-10-29 16:53:51 26 4
gpt4 key购买 nike

您能解释一下这个 C 程序的输出吗?我猜问题出在 printf("%d\n",t); 函数调用期间堆栈损坏,因为我正在插入 float 但读取整数。我不确定。

#include <stdio.h>

int main()
{
long x;
float t;
scanf("%f",&t);
printf("%d\n",t);
x=30;
printf("%f\n",x);
{
x=9;
printf("%f\n",x);
{
x=10;
printf("%f\n",x);
}
printf("%f\n",x);
}
x==9;
printf("%f\n",x);

}

和输出

$ ./a.out 
20.39
0
20.389999
20.389999
20.389999
20.389999
20.389999
$

最佳答案

发生的事情是你对编译器撒谎......首先你告诉它你将向 printf 发送一个 int 但你发送了一个 float ,然后你告诉它你要去发送一个 double 但你发送了一个 long

不要那样做。不要对编译器撒谎。

您已调用未定义行为。任何事情都可能发生。您的程序可能会损坏堆栈;它可能会输出你所期望的;它可能会使柠檬汁从 USB 端口流出;它可能使 demons fly out of your nose ; ...

关于c - C 程序中的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5402928/

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