这个C程序在做什么?整数算术**

时间:2013-02-01 01:19:18

标签: c integer-arithmetic

尽管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;
}

2 个答案:

答案 0 :(得分:3)

表达式sum >= y是一个布尔值,因此根据其值转换为01。由于xy是无符号的,假设没有溢出,您将始终拥有x + y >= y,因此结果始终为true,因此1

(推测该功能的关键是检查是否发生溢出......)

答案 1 :(得分:2)

由于x和y是无符号的,因此它们都是正数。因此,x和y的总和必须大于y。因此,sum&gt; = y为真,由于您将其格式化为%d。

,因此将其转换为1