gpt4 book ai didi

c - printf 未知精确类型的整数

转载 作者:行者123 更新时间:2023-12-02 05:59:10 25 4
gpt4 key购买 nike

我已经把我的代码放在

typedef int myinteger ;

但是,如果我将 typedef 更改为另一种整数类型,我希望我的所有代码继续有效。

现在我想打印一个 myinteger 类型的变量。这是一种正确的方法吗?我刚刚发现了以下“hack”:

printf("%lld", myvariable) ;

希望任何整数类型都适合 long long 并且编译器会进行正确的转换。它似乎适用于 gcc(尽管我有一个警告)。 printf 是一个问题,但它们也可能是其他问题(比如找到最大的“myinteger”)。

更一般地说,是否有可能/希望尝试我尝试实现的目标,编写代码时仅假设 myinteger 指的是某种整数类型?

最佳答案

我推荐:

typedef int my_type_t;
#define FMT_MY_TYPE "%d"

然后:

my_type_t my_var = 0;
printf("Here is my_var: " FMT_MY_TYPE "\n", my_var);

这甚至适用于结构。这是一个概括:

typedef struct { int a; int b; } my_struct_t;
#define FMT_MY_STRUCT "{a: %d, b: %d}"
#define FMT_MY_STRUCT_ARG(x) (x).a, (x).b

然后:

my_struct_t my_var = {0, 1};
printf("Here is my_var: " FMT_MY_STRUCT "\n", FMT_MY_STRUCT_ARG(my_var));

关于c - printf 未知精确类型的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34545271/

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