使用%zd打印数据类型的大小

C99和C11提供%zd转换说明匹配sizeof的返回类型:

printf("%zd",sizeof(long long));

如果使用%d

会得到以下报错

warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
printf("%d",sizeof(long long));
        ~~  ^~~~~~~~~~~~~~~~~
        %lu
1 warning generated.

可以看到,sizeof返回的类型是unsigned long而%d是int类型的说明符

%zd同样适用于strlen()函数

#include<stdio.h>
#include<string.h>
int main()

{
    
printf("%zd",strlen("fdfsfsdsfsd"));
}

如果使用%d,同样会报错:

warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
printf("%d",strlen("fdfsfsdsfsd"));
        ~~  ^~~~~~~~~~~~~~~~~~~~~
        %lu
1 warning generated.

注意如果系统不支持%zd,可使用%u或者%lu代替%zd。

发布了257 篇原创文章 · 获赞 38 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 自定义皮肤 设计师:

分享到微信朋友圈

×

扫一扫,手机浏览