📜  门| GATE CS Mock 2018 |设置 2 |第 47 题

📅  最后修改于: 2021-09-27 06:13:03             🧑  作者: 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 将取决于编译器实现。答案:(乙)
说明:按照 C 标准 C11,printf() 的所有参数都被评估,而不管它们是否被打印。这就是为什么 (b=a+2) 也将被评估并且 b 的值在第一个 printf() 之后将为 12。所以正确答案是B。
这个问题的测验