首页 > 解决方案 > ?: 运算符在 C 中究竟是如何工作的?

问题描述

我有一个问题,编译器如何对以下代码进行操作:

#include<stdio.h>

int main(void)
{
  int b=12, c=11;
  int d = (b == c++) ? (c+1) : (c-1);
  printf("d = %i\n", d);
}

我不确定为什么结果是 ‍‍‍<code>d = 11。

标签: csyntaxincrementconditional-operatorpost-increment

解决方案


int d = (b == c++) ? (c+1) : (c-1);

  • 的值c++是 的当前值c,11。另外,c递增到 12。
  • b == 11是假的,因为b是 12。
  • 既然(b == c++)是假的,(c-1)就用。此外,c到 12 的增量必须在此时完成。
  • 因为c是 12,c-1所以是 11。
  • d被初始化为那个值,11。

推荐阅读