yohhoyの日記

技術的メモをしていきたい日記

インクリメント on 複素数

プログラミング言語Cの次期仕様C2yでは、複素数型(_Complex float/double/long double)に対するインクリメント/デクリメントが正式サポートされる。gcc/Clangでは独自拡張としてサポート済み。

_Complex double c = 41.;
++c;  // OK: C2y
assert(c == 42.);

ノート:複素数のうち実部(real part)が+1.0/-1.0される。C++標準ライブラリの複素数std::complex<T>は、C言語とは異なりインクリメント/デクリメントをサポートしない。

gcc 14.2/-pedantic指定時の警告メッセージ:

warning: ISO C does not support '++' and '--' on complex types [-Wpedantic]

Clang 18.1.0/-pedantic指定時の警告メッセージ:

warning: ISO C does not support '++'/'--' on complex integer type '_Complex double' [-Wpedantic]

関連URL