1476

7 分钟

#C 语言标准库函数 ckd_add

/********************************************* * @brief 计算整数加法,并检查结果是否溢出 * @param[out] result 返回结果 * @param x 加数 * @param y 加数 * @return 是否溢出 ********************************************/ bool ckd_add(Type1* result, Type2 x, Type3 y);

说明

计算整数加法 *result = x + y,并检查结果是否溢出。

在进行计算时,两个操作数 x y 当作无限精度的有符号数进行计算,最后将结果转换为 Type1 赋值给 result

如果结果在 Type1 的范围之内,则返回 true;如果结果超出了 Type1 的范围,则返回 false

参数类型 Type1Type2Type3 应当为整数类型,但不可以是 bool,位精度整数(_BitInt(n)),普通 char 或枚举类型。

参数

  • result - 返回结果(整数)
  • x - 加数(整数)
  • y - 加数(整数)

返回值

  • result 中返回的是否是准确结果(是否溢出)

#示例

#include <stdio.h> #include <stdckdint.h> int main(void) { unsigned char a = 233; unsigned char b = 123; unsigned char result; if (ckd_add(&result, a, b)) { printf("%d + %d = %d 结果溢出了!\n", a, b, result); } else { printf("%d + %d = %d\n", a, b, result); } return 0; }

运行结果:

233 + 123 = 100 结果溢出了!

#推荐阅读

#外部参考

#参考标准

  • C23 standard (ISO/IEC 9899:2024):
    • 7.20.1 The ckd_ checked integer operation macros (p: 311)

创建于 2025/10/19

更新于 2025/10/19