在以下代码中 -
int main() {
// your code goes here
int a=10,b=20,c=30;
printf("%d %d %d\n",a,b,c);
printf("%d %d %d %d %d %d\n",a,b,c);
return 0;
}
输出在各自的位置包含10,20和30,但剩余的%d格式说明符输出垃圾值。如果我们没有指定所需的参数数量,为什么不给出错误?这有时候有用吗?
代码链接:ideone
答案 0 :(得分:3)
undefined。编译器不需要在未定义的行为上产生任何错误。
虽然,大多数编译器都会这样做。例如,GCC为您的代码生成以下内容:
warning: too few arguments for format
编译时使用:
gcc -Wall -Wextra -std=c99 file.c