ckd_add

来自cppreference.com
< c‎ | numeric
在标头 <stdckdint.h> 定义
#define ckd_add(result, a, b) /* 由实现定义 */

// 暴露的接口:

bool ckd_add(type1* result, type2 a, type3 b);
(C23 起)

计算加法 x + y 并将结果存储于 *result。进行加法如同两个操作数都表示为具有无限范围的有符号整数类型,随后将结果从这个整数类型转换为 type1 一样。如果赋给 *result 的值正确表示运算的数学结果,就返回 false。否则返回 true。这种情况下,赋给 *result 的值是运算的数学结果根据 *result 的宽度回绕所得。

参数

a, b-整数
result-存储结果的地址

返回值

如果赋给 *result 的值正确表示加法的数学结果则为 false,否则为 true

注解

type2type3 应当是并非“普通”charbool位精确整数类型或者枚举类型之外的任何整数类型,且二者可以相同。*result 应当是并非“普通”charbool、位精确整数类型或者枚举类型之外的任何整数类型的可修改左值。

建议实现在 type2type3 不是适当整数类型,或当 *result 不是适当整数类型的可修改左值时给出诊断消息。

示例

引用

  • C23 标准(ISO/IEC 9899:2024):
  • 7.20.1 The ckd_ checked integer operation macros (第 311 页)

参阅

两个整数的带检查减法运算
(泛型函数宏)
两个整数的带检查乘法运算
(泛型函数宏)
ckd_add 的 C++ 文档