C 程序的输出 | 13套
难度等级:菜鸟
问题 1
预测以下程序的输出。
int main()
{
char arr[] = "geeksforgeeks";
printf("%d", sizeof(arr));
getchar();
return 0;
}
输出:14
字符串“geeksforgeeks”有 13 个字符,但大小为 14,因为当未明确提及字符数组大小时,编译器包含单个 '\0'(字符串终止符)。
问题2
在下面的程序中,你会用什么代替“?”打印“极客”。显然,不是“极客”。
int main()
{
char arr[] = "geeksforgeeks";
printf("%s", ?);
getchar();
return 0;
}
答案: (arr+8)
printf 语句打印从 arr+8 开始的所有内容,直到找到 '\0'
问题 3
预测以下程序的输出。
int main()
{
int x, y = 5, z = 5;
x = y==z;
printf("%d", x);
getchar();
return 0;
}
问题的关键在于 x = y==z 的陈述。的运算符符==,是因为优先运算符=之前执行(<=,> =和==)比赋值运算符=高。
运算符的结果是0或1根据该比较结果。由于 y 等于 z,表达式 y == z 的值变为 1,并且该值通过赋值运算符分配给 x。
问题 4
预测以下程序的输出。
int main()
{
printf(" \"GEEKS %% FOR %% GEEKS\"");
getchar();
return 0;
}
输出:“极客% FOR %极客”
反斜杠 (\) 用作双引号 (") 的转义字符。有关 %% 的说明,请参见此处。