使用%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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值