printf() 中的 format 格式 %zu

printf() 的语法格式为:

%[parameter][flags][width][.precision][length]type

%zu 对照过来,z 属于 length 字段,u 属于 type 字段。

该表达式用来表明输出格式是长度型(size_t)的无符号整型值。其中 size_t 在不同的位数操作系统中定义是不同的:

/*  32位 */
typedef unsigned int    size_t;
typedef int             ssite_t;

/*  64位 */
typedef unsigned long   size_t;
typedef long            ssize_t;

因此在程序设计的时候,如果参数是 size_t 或者 ssize_t,在进行格式化输入或输出的时候务必使用 ‘z’ 修饰符,以防止显示异常。

常见的 %d、%x 等表示的是整型值,最多表示 4 个字节,而在 64 位系统中,数据有可能需要更多的字节表示,所有用 size_t 定义,就可以跨系统使用,不用担心溢出问题。对应的格式化显示的时候,也就不存在这个问题了。明白了这点,就可以理解 'z' 和 ‘l’ 等效了。‘z’ 只控制长度,具体的是有符号还是无符号,还是由后面的类型决定。

猜你喜欢

转载自blog.csdn.net/linuxweiyh/article/details/112978257
今日推荐