gpt4 book ai didi

在 C 的宏中用 float 计算

转载 作者:太空狗 更新时间:2023-10-29 15:34:45 26 4
gpt4 key购买 nike

我和同事正在备考,我们要分析C代码。翻看往年的测试,看到了下面的代码,不是很懂:

#include <stdio.h>
#define SUM(a,b) a + b
#define HALF(a) a / 2

int main(int argc, char *argv[])
{
int big = 6;
float small = 3.0;

printf("The average is %d\n", HALF(SUM(big, small)));
return 0;
}

这段代码打印了 0,我们根本不明白...你能给我们解释一下吗?

提前致谢!

最佳答案

编译器的警告(format ‘%d’ expects argument of type ‘int’,but argument 2 has type ‘double’)提供了足够多的信息。您需要更正您的 format-specifier,它应该是 %lf,而不是 %d,因为您正在尝试打印一个 值。

  printf("The average is %lf\n", HALF(SUM(big, small)));

printf 将按照您告诉它的方式处理您指向的内存。在这里,它将表示 float 的内存视为 int。因为两者的存储方式不同,所以你应该得到本质上是随机数的东西。它不必总是 0

关于在 C 的宏中用 float 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860139/

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