c - 这个C程序在做什么?整数运算**

标签 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;
}

最佳答案

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

(大概这个函数的重点是检查是否发生了溢出...)

关于c - 这个C程序在做什么?整数运算**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638201/

相关文章:

python - 为什么 2 * x * x 在 Python 3.x 中比 2 * ( x * x ) 快,对于整数?

c - 自由(): invalid next size (fast) error in C using recursion

c - 任何可用于将 c99 样式注释//转换为 c 样式注释/* ..*/到整个项目的工具/脚本?

c - 为什么我的代码中的 fork() 函数没有创建子进程?

c++ - 将一个数字提高到一个巨大的指数

c - 将某些数据类型转换为更大的数据类型与算术右移相同吗?

c - 库插入/注入(inject)不适用于 open 命令

C malloc 段错误

C 数组算术和指针

java - 等差数列中的前 1,000 个数 1, 4, 7, 10