c - 为什么 b 的值为 100?

标签 c

此内容位于 C:

#include <stdio.h>

int main()
{
    int a=100,b;
    b= (a>100)?a++:a--;
    printf("%d %d\n",a,b);
}

b 分配了值 100 但在尝试时

int main()
{
    int a=100,b;
    b= (a>100)
    printf("%d %d\n",a,b);
}

b 在返回 true 时打印值 1。 为什么使用 '?:' 运算符时会有所不同?

最佳答案

?: 运算符计算 : 之前的内容或 : 之后的内容,以确定其计算结果。在本例中,(a>100) 为 false,因此计算结果为 a--。由于这是后递减,递减发生在提供其值之后,因此它的计算结果为 b 在递减之前所具有的 100 值。因此b得到这个值。

因此,在第一个示例中,计算a--的结果被分配给b。在第二个示例中,(a>100) 的计算结果被分配给 b

关于c - 为什么 b 的值为 100?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54818230/

相关文章:

c - 将数组作为参数传递给函数

使用单个相机计算距离

C - 用单个字符替换连续多次出现的字符

ios - 是否可以从 Visual Studio 2013 为 iOS 构建静态(.a)库?

ubuntu - 找不到 __put_user_1 的定义位置

c - 在 C 中使用 free() 时出错

c - fprintf 在正确输出的中间打印一个垃圾值以将其归档

java - 如何全局获取Android中的鼠标位置

c - 为什么 Python 3 和 C 中的 if 语句会产生不同的结果?

c - 这是内存泄漏,因为内存是在堆栈上分配的吗?