Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 固定宽度整数的格式说明符?_C - Fatal编程技术网

C 固定宽度整数的格式说明符?

C 固定宽度整数的格式说明符?,c,C,在处理诸如int32_t、uint16_t和int8_t等类型时,printf使用哪些格式说明符 使用%d、%i等不会产生可移植程序。使用PRIX宏是最好的方法吗 使用PRIX宏是最好的方法吗 据我所知,是的 编辑:另一种解决方案是强制转换为至少与要打印的类型一样宽的类型。例如,int至少有2个字节宽,可以使用printf(“%d\n”,(int)some\u var)打印int16\u t,是的,如果您使用的是新类型,您确实应该使用新的格式说明符 这是最好的方法,因为实现已经完成了确保格式字符

在处理诸如int32_t、uint16_t和int8_t等类型时,printf使用哪些格式说明符

使用%d、%i等不会产生可移植程序。使用PRIX宏是最好的方法吗

使用PRIX宏是最好的方法吗

据我所知,是的


编辑:另一种解决方案是强制转换为至少与要打印的类型一样宽的类型。例如,
int
至少有2个字节宽,可以使用
printf(“%d\n”,(int)some\u var)打印
int16\u t
是的,如果您使用的是新类型,您确实应该使用新的格式说明符

这是最好的方法,因为实现已经完成了确保格式字符串对类型正确的繁重工作

例如:

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main (void) {
    int32_t i32 = 40000;
    printf ("%d\n", i32);            // might work.
    printf ("%" PRId32 "\n", i32);   // will work.
    return 0;
}
#包括
#包括
#包括
内部主(空){
int32_t i32=40000;
printf(“%d\n”,i32);//可能有效。
printf(“%”PRId32“\n”,i32);//将正常工作。
返回0;
}
显示了两种方法

然而,实际上并不能保证第一个会像你期望的那样。例如,在具有16位
int
类型的系统上,很可能会得到不同的值