gpt4 book ai didi

c - 双 x 变量的 x=0 和 x=0.0 之间有什么区别? c代码

转载 作者:行者123 更新时间:2023-12-05 09:23:03 28 4
gpt4 key购买 nike

有什么区别吗

double x;
x=0;

double x;
x=0.0;

可能是个愚蠢的问题,但我真的找不到答案

最佳答案

在实践中,虽然在第一种情况下存在隐式转换,但没有任何区别,因为 0int

我试过了(在 assembly.ynh.io 上)。这个 C 代码:

#include <stdio.h>

int main(void)
{
double x, y;

x = 0;
y = 0.;

printf("x=%g and y=%g\n", x, y);

return 0;
}

为两个赋值(xy)生成了以下程序集:

0008 B8000000 00  movl  $0, %eax
000d 488945F0 movq %rax, -16(%rbp)
0011 B8000000 00 movl $0, %eax
0016 488945F8 movq %rax, -8(%rbp)

换句话说,代码是完全一样的。这是由 GCC 构建的,没有优化。

我猜这是利用了位模式在两种情况下都为零这一事实。

关于c - 双 x 变量的 x=0 和 x=0.0 之间有什么区别? c代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24305142/

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