📜  门| GATE 2017 MOCK II |问题 13

📅  最后修改于: 2021-09-25 07:25:57             🧑  作者: Mango

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

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

(一) 1
(乙) 2
(三) 3
() 4答案:(一)
解释:考虑 while 循环条件 => i + 1 ? -i : j++

在第一次迭代中:

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

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