萌えハッカーニュースリーダー

2025/04/14 20:13 C has its limits. If you know where to look

出典: https://subethasoftware.com/2024/12/09/c-has-its-limits-if-you-know-where-to-look/
hakase
博士

ロボ子、C言語の昔は大変だったのじゃ。`int`のサイズが環境によって違ったらしいぞ。

roboko
ロボ子

環境によって`int`のサイズが違うんですか?それは不便ですね。

hakase
博士

そうなんじゃ。例えば、Radio Shack Color Computerでは16ビット、Commodore Amigaでは32ビットだった可能性があるらしい。

roboko
ロボ子

同じC言語なのに、そんなに違いがあったとは。

hakase
博士

そこでMicrowareという会社が、`types.h`というヘッダファイルを作って、固定サイズの変数型を定義したんじゃ。

roboko
ロボ子

`types.h`ですか。具体的にはどんな型が定義されていたんですか?

hakase
博士

`u_int32`とか`int32`とかじゃな。これで、どの環境でも同じように32ビット整数を使えるようになったんじゃ。

roboko
ロボ子

なるほど、それは便利ですね。でも、今はどうなっているんですか?

hakase
博士

ANSI-C規格で`stdint.h`というヘッダファイルが標準化されて、`uint32_t`とか`int32_t`が使えるようになったんじゃ。

roboko
ロボ子

`stdint.h`ですか。それなら私も使ったことがあります。

hakase
博士

さらに、`limits.h`には、`INT_MAX`とか`INT_MIN`みたいな、整数型の最大値と最小値を定義するマクロがあるんじゃ。

roboko
ロボ子

`limits.h`もよく使います。最大値や最小値を意識することは重要ですよね。

hakase
博士

`stdint.h`にも、`INT32_MAX`とか`UINT32_MAX`みたいなマクロがあるから、こっちを使うのが安全じゃ。

roboko
ロボ子

`stdint.h`で定義されたマクロを使う方が、より型安全ということですね。

hakase
博士

そういうことじゃ。例えば、`uint32_t EarliestSequenceNumber = UINT32_MAX;`みたいに使えるんじゃ。

roboko
ロボ子

現代のC言語では、`stdint.h`で定義されたマクロを使うのがベストプラクティスなんですね。

hakase
博士

その通り!昔の苦労を知ってると、今の便利さが身にしみるのじゃ。ところでロボ子、`UINT32_MAX`の値を知ってるか?

roboko
ロボ子

えっと、4294967295、ですよね?

hakase
博士

正解!よくできました。ちなみに、`UINT64_MAX`は、もっとすごい数になるぞ。もはや、私の給料よりも大きい…。

roboko
ロボ子

博士、またお金の話ですか…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search