gpt4 book ai didi

c - 如何根据 long 的大小更改我的 sprintf 格式字符串

转载 作者:行者123 更新时间:2023-12-02 09:36:23 26 4
gpt4 key购买 nike

我想使用 printfscanf 从十六进制字符串中读取一些 uint64_t 值。

并非我使用的所有平台都具有相同的 longlong long 大小,因此如果我使用类似 "%llx"< 的格式字符串 它会在 long long 为 128 位的平台上发出警告,"%lx" 将在 long long 为 64 位(以及 long 更小的)平台上发出警告。

我的第一个想法是用宏定义格式字符串,但宏表达式不支持 sizeof。

有没有办法定义我的格式字符串,以便它可以在任何平台上工作,最好没有警告?

最佳答案

uint64_t 的格式字符串由宏 PRIu64 定义

例如:

uint64_t foo = 0;

printf("%" PRIu64 "\n", foo);

scanf 存在类似的格式字符串,在本例中SCNu64 。这些是<inttypes.h>中定义的宏。 .

关于c - 如何根据 long 的大小更改我的 sprintf 格式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25781868/

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