Namespaces
Variants

ckd_add

From cppreference.net
ヘッダーで定義 <stdckdint.h>
#define ckd_add( result, a, b ) /* implementation-defined */

// 公開インターフェース:

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

x + y の加算を計算し、結果を * result に格納します。加算は、両オペランドが無限の範囲を持つ符号付き整数型で表現されているものとして実行され、結果はこの整数型から type1 に変換されます。 * result に代入される値が演算の数学的な結果を正しく表現している場合、 false を返します。それ以外の場合、 true を返します。この場合、 * result に代入される値は、演算の数学的な結果が * result の幅にラップアラウンドされた値です。

目次

パラメータ

a, b - 整数値
result - 結果の格納先アドレス

戻り値

false が返されるのは、 * result に代入された値が加算の数学的結果を正しく表現している場合であり、 true が返されるのはそれ以外の場合です。

注記

type2 および type3 は、「プレーン」な char bool ビット精度整数型 、または 列挙型 以外の任意の整数型でなければならず、同じ型でも構いません。 * result は、「プレーン」な char bool 、ビット精度整数型、または列挙型以外の任意の整数型の変更可能な左辺値でなければなりません。

type2 または type3 が適切な整数型でない場合、あるいは * result が適切な整数型の変更可能な左辺値でない場合、診断メッセージを生成することが推奨されます。

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.20.1 ckd_ チェック付き整数演算マクロ (p: 311)

関連項目

(C23)
2つの整数に対するチェック付き減算演算
(型汎用関数マクロ)
(C23)
2つの整数に対するチェック付き乗算演算
(型汎用関数マクロ)