6"):puts("6”,为什么? 最佳答案 我认为 OP 不会对三元运算-6ren">
gpt4 book ai didi

c - 添加有符号和无符号整数

转载 作者:太空狗 更新时间:2023-10-29 15:42:41 25 4
gpt4 key购买 nike

int main()
{
unsigned int a=6;
int b=-20;

(a+b)>6?puts(">6"):puts("<=6");
}

我很清楚 三元运算符 在这段代码中是如何工作的。我无法理解此处添加的有符号无符号整数

试过运行代码,输出是“>6”,为什么?

最佳答案

我认为 OP 不会对三元运算符感到困惑,这是一个不同的问题。

来自 C99 标准,第 6.3.1.8 节(“常规算术转换”):

if the operand that has unsigned integer type has rank greater or equal to the rank of the type of the other operand, then the operand with signed integer type is converted to the type of the operand with unsigned integer type.

unsigned intint具有相同的排名,所以它等同于:

(a + (unsigned int)b > 6)

要修复它,您需要明确地向另一个方向转换,即:

((int)a + b > 6)

所以这就是输出 >6 的原因和 <=6

关于c - 添加有符号和无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com