📜  C测验– 103 |问题2

📅  最后修改于: 2021-05-25 20:31:07             🧑  作者: Mango

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

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

(A) = 11 15 =
(B) = 11 12 =
(C)由于第一个printf()中的(b = a + 2)而引起的编译器错误。
(D)没有编译错误,但输出将为= 11 X =,其中X将取决于编译器的实现。答案: (B)
说明:根据C标准C11,对printf()的所有参数进行评估,无论它们是否被打印。这就是为什么(b = a + 2)也将被求值,并且在第一个printf()之后b的值将为12的原因。这就是为什么正确答案是B。
这个问题的测验

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