【发布时间】:2016-01-24 11:20:33
【问题描述】:
#include <stdio.h>
int main()
{
char arr[]= {'g', 'e', 'e', 'k', 's'};
printf("%d %d", sizeof(arr),strlen(arr));
return 0;
}
我得到的输出是 5 6 ,我无法理解为什么我得到 6 而不是 5 因为字符数组长度是 5?
【问题讨论】:
-
1.那不是字符串。 2. 你没有使用
strlen(这很好,因为...1)。 -
“我得到的输出是 5 6” 不,你不是。你得到的输出为 5。也就是说,
%d是sizeof结果的错误格式说明符,所以我想它可能是 UD。 (还要注意sizeof不是函数,不需要()。) -
您应该使用
%zu,因为它是size_t的正确格式说明符。 -
@CoolGuy: 或者使用
%d并转换为int:printf("%d\n", (int)sizeof arr);但是是的,%zu更好(除非你被一个不支持它的古老实现所困扰)。 -
@T.J.Crowder:
UD是什么意思?你的意思是UB?