尽管x和y的值是,但它返回1。我不明白为什么或为什么。我从我的教科书中复制了一个程序,所以这不是我写的。我们目前正在研究整数运算。
有人可以解释这段代码在做什么吗?谢谢!
#include <stdio.h>
int uadd_ok(unsigned x, unsigned y)
{
unsigned sum = x+y;
return sum >=y;
}
int main(int argc, char** argv)
{
int x = 1, y = 5;
printf("Answer is: %d\n", uadd_ok(x,y));
return 0;
}
答案 0 :(得分:3)
表达式sum >= y
是一个布尔值,因此根据其值转换为0
或1
。由于x
和y
是无符号的,假设没有溢出,您将始终拥有x + y >= y
,因此结果始终为true,因此1
。
(推测该功能的关键是检查是否发生溢出......)
答案 1 :(得分:2)
由于x和y是无符号的,因此它们都是正数。因此,x和y的总和必须大于y。因此,sum&gt; = y为真,由于您将其格式化为%d。
,因此将其转换为1