break;
输出写了Grinch,但我无法理解这段代码是如何执行的。如果int main(void)
{
char s[] = "Hsjodi", *p;
for(p = s; *p; p++)
--*p;
puts(s);
return 0;
}
数组中不存在G
,r
,i
这样的字母,并且何时循环终止我们的确实{{1},那怎么写出Grinch?是吗?
答案 0 :(得分:1)
首先,请注意for
循环没有任何大括号来创建一个块,所以循环体只是
--*p;
与
相同--(*p);
现在,根据上面的语句,数组中的所有元素,直到终止null
,已经减少了一个位置。这意味着,H
现在是G
,s
现在是r
,依此类推。注意
此外,循环*p
中的条件检查是写*p != '\0'
或*p != 0
的简写形式。
通过循环递减后,修改后的数组已通过puts()
打印。
注意:您可能需要查看ASCII table以供参考。