gpt4 book ai didi

c - 字符串说明符( %d 、 %f 等...)

转载 作者:行者123 更新时间:2023-12-04 06:14:17 25 4
gpt4 key购买 nike

#include <stdio.h>
#define Type int

int main()
{
Type x=3;
printf("%d",x);
return 0;

}

代码简单,运行良好。我的问题是,如果我将 #define Type int 更改为 #define Type float 所以,我必须将 %d 更改为 % f 也是。有什么方法可以得到一个通用说明符,它适用于所有 intfloatcharstring等等... 这样一来,如果我更改 #define Type int 那么我就不必更改 printf() 函数中的格式说明符了吗?

最佳答案

这是我的建议:

#include <stdio.h>

#define TYPE int
#define TYPE_FORMAT "%d"

int main()
{
TYPE x=3;
printf("Value of x is: " TYPE_FORMAT "\n", x);
return 0;
}

没有办法制作printf()在 C 中自动检测类型。在 C++ 中,您可以使用重载的 <<运算符,确实自动计算出类型,但 C 没有类似的东西。

但是你可以#define格式和类型,如果您将多个字符串文字并排放置,C 编译器会自动将它们合并为一个字符串常量。

附言而不是使用 #define对于类型,您可能应该使用 typedef像这样:

typedef int TYPE;

这意味着在调试器中,您可以看到您的变量 x类型为 TYPE , 而与 #define你会看到它的类型 int .

在一个完美的世界中,你会像这样声明格式字符串:

static char const * const TYPE_FORMAT = "%d";

但我们并不生活在一个完美的世界中。如果您对 TYPE_FORMAT 进行上述声明,编译器可能不够聪明,无法将字符串与其他字符串文字合并。 (我用 GCC 试过了,正如我预料的那样,我收到了一条错误消息。)所以对于 TYPE_FORMAT你绝对应该使用#define。

总结:使用typedef对于类型,但使用 #define格式。

关于c - 字符串说明符( %d 、 %f 等...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11784481/

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