不管 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;
}
最佳答案
表达式 sum >= y
是一个 bool 值,因此它会根据其值转换为 0
或 1
。由于 x
和 y
是无符号的,假设没有溢出,您将始终有 x + y >= y
,因此结果始终为真,因此 1
。
(大概这个函数的重点是检查是否发生了溢出...)
关于c - 这个C程序在做什么?整数运算**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638201/