📜  门| GATE 2017 MOCK II |问题13

📅  最后修改于: 2021-06-29 23:02:46             🧑  作者: Mango

以下C代码的输出是什么?

#include 
int main()
{
   int i=2, j=2;
   while (i+1 ? --i : j++)
      printf("%d",i);
   return 0;
}

(A) 1
(B) 2
(C) 3
(D) 4答案: (A)
说明:考虑while循环条件=> i + 1吗? –i:j ++

在第一次迭代中:

我+1 = 3(是)
因此三元运算符将返回–i即1,条件部分为1表示为true,因此条件为true时。
因此,printf语句将打印1

在第二次迭代中:
i + 1 = 2(是)
因此三元运算符将返回–i,即0,条件部分为0表示假,因此条件为假时。
因此,程序控制将退出while循环。这个问题的测验