いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

(notitle)

ひょんな事から、<limits.h>を見てました。
このヘッダーには、たまーに使う INT_MIN、ULONG_MAX とか _I64_MIN など、型の上限値やら下限値やらが定義されています。
そんな中発見したのですが… (自動改行が発生してたら、脳内補完してください^^;)
↓↓


#if     _INTEGRAL_MAX_BITS >= 128
/* minimum signed 128 bit value */
#define _I128_MIN   (-170141183460469231731687303715884105727i128 - 1)
/* maximum signed 128 bit value */
#define _I128_MAX     170141183460469231731687303715884105727i128
/* maximum unsigned 128 bit value */
#define _UI128_MAX    0xffffffffffffffffffffffffffffffffui128
#endif


でかっ!!!

128bitの上限下限がすでに定義されていたとは…。
しかし、_UI128_MAX の定義よ。f 並びすぎやぁぁぁaaaaaaaaaaaaaaaaaa!! (ちょっと対抗してみた) 

…あれー?でもそしたら、128bit型ってのが使えるの?  というわけで、早速実験してみました。 "__int128" 型 と、サフィックス "i128"。(VC7.1)


■ __int128 型
error C4235: 非標準の拡張機能が使用されています : '__int128' キーワードはこのプロダクトではサポートされていません。

■ i128 サフィックス
error C2059: 構文エラー : 'サフィックスが無効です。'
error C2146: 構文エラー : ';' が、識別子 'i128' の前に必要です。

コンパイルエラーになりましたが、"__int128型" ってのは予約はされてるようですね。 無意味に時代の流れを感じますわー。

しかし、64bitコンパイラだったら通るんでしょうかねぇ…