📜  C测验– 103 |问题3

📅  最后修改于: 2021-05-29 12:46:40             🧑  作者: Mango

当我们编译并运行以下C程序片段时,将会发生什么?

#include "stdio.h"
int main()
{
 int a = 10;
  
 printf("=%d %d=",(a+1));
  
 return 0;
}

(A) = 11 0 =
(B) = 11 X =其中X取决于编译器实现
(C)未定义的行为
(D)由于缺少第二个%d的参数而导致的编译器错误答案: (C)
说明:在printf()和fprintf()的上下文中,根据C标准C11条款7.21.6.1,
“如果格式的参数不足,则行为是不确定的。如果在保留参数的情况下用尽了格式,则会对多余的参数进行评估(一如既往),否则将被忽略。”
一些实现可以选择打印= 10 0 =,而其他实现可以选择打印= 11 X =。这就是上述程序的输出随编译器和平台而变化的原因。因此,正确答案是C)。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。