【发布时间】:2016-11-27 08:05:12
【问题描述】:
为什么这个程序打印 4% 而不是 4?
#include <stdio.h>
int main() {
printf("%lu", sizeof(int));
return 0;
}
【问题讨论】:
-
你确定打印
%的不是shell而是你的程序吗?如果是这样,那应该是因为您通过将错误类型的数据传递给printf()来调用未定义的行为。从sizeof运算符返回的打印size_t的正确格式是%zu。 -
我打赌你的 shell 是 C shell
-
在数字后面加一个
\n,让你的shell移动到下一行(假设shell是打印%字符的那个)。 -
可能是 zsh,如果它检测到程序以光标在错误位置结束(即输出结束行不完整)