📜  门| GATE CS Mock 2018年|套装2 |第47章

📅  最后修改于: 2021-06-29 18:49:08             🧑  作者: 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。
这个问题的测验