#include <stdio.h>
#include <string.h>
int main()
{
printf("%d\n",sizeof("S\065AB"));
printf("%d\n",sizeof("S65AB"));
printf("%d\n",sizeof("S\065\0AB"));
printf("%d\n",sizeof("S\06\05\0AB"));
printf("%d\n",sizeof("S6\05AB"));
printf("%d\n",sizeof("\0S65AB"));
return 0;
}
输出的sizeof:行为与字符串
5
6
6
7
6
7
谁能解释与字符串的这种行为?
在Debian 7.4
你在问为什么它不停在'\ 0'?只是因为它报告存储在内存中的常量的大小。 Sizeof不关心它是否为空字符串。它只是看到一个静态大小的字符数组。 – Dave
'sizeof'返回'size_t'类型的值;您将该值传递给'printf()'说明符'“%d”',它需要'int'。 'size_t'和'int'不必具有相同的表示形式:您可能会得到奇怪的结果。我建议你使用C99的''%zu''指定符或者从'sizeof'中强制返回值:'printf(“%d \ n”,(int)sizeof“hello”);'' – pmg