c - ?: 运算符在 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。
解决方案
在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。
推荐阅读
- netlogo - Netlogo 海龟如果到达上限就会死亡
- memory - 如何找到在 Linux 环境中可用的用户空间内存量?
- amazon-web-services - 没有与主机名关联的地址 - Kubernetes Pod 内部
- javascript - 使用 React-dnd 的 MUI 树视图
- python - 如何在我的 while 循环中继续我的 try/catch
- ef-fluent-api - EF Core:实体更新因布尔而失败?数据库中具有默认约束的属性
- php - 在 PHP 和 MySQL 中选择两个日期和两个表
- c# - 使用manualResetEvent的死锁 - c#
- java - 在 mariadb 中插入双引号时出错
- java - Apache Flink 1.14.0 - 提交作业时出错