オーバーフロー:+、+%、+|の違い
トラップ、ラップ、飽和を伴う算術を学びます。
「オーバーフロー:+、+%、+|の違い」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
数値には限界があります
ビット幅を持つすべての整数型には、格納できる最大値があります。それを超えるとオーバーフローが発生し、値が範囲を超えて増えようとした瞬間に問題になります。
Zigはオーバーフローを検出します
デフォルトでは、通常の+演算子がオーバーフローをトラップします。安全なビルドでは、上限を超えると値を壊す代わりにプログラムが停止します。
var x: u8 = 255;
x = x + 1; // panics: overflowトラップが役立つ理由
ひそかな誤答よりも、明確なクラッシュのほうが優れています。トラップにより、見つけてすぐ修正できる明白な失敗としてバグを表面化できます。
+%によるラップ演算
値を意図的に一周させたい場合もあります。+%演算子はラップアラウンドするため、u8で255 + 1を計算すると0になります。
var x: u8 = 255;
x = x +% 1; // 0ラップ演算が適切な場合
ラップ演算は、値が一周することを意図したカウンター、ハッシュ、チェックサムで活躍します。%接尾辞で明示的に指定し、偶然そうなることはありません。
+|による飽和演算
+|演算子はラップせず、上限値に固定します。255のu8は255のままになるため、上限を超えてはいけない値に最適です。
var x: u8 = 255;
x = x +| 1; // 2553つの選択肢、1つの判断
つまり、+はトラップし、+%はラップし、+|は飽和します。意図に合った動作を選ぶことで、コード内のオーバーフロー処理を明示的にできます。
減算にも同じ3種類があります
これらの接尾辞は加算だけのものではありません。-, -%, -|を使えば、同じ方法でトラップ、ラップ、飽和する減算を指定できます。
var x: u8 = 0;
x = x -| 1; // 0乗算にも使えます
乗算も同じパターンに従います。*, *%, *|を使い分けます。オーバーフロー時の動作を選ぶという1つのルールが、すべての算術演算子に適用されます。
const big = a *% b; // wrap on overflowデフォルトのビルドは安全です
DebugモードとReleaseSafeモードでは、通常の演算子がオーバーフローをチェックします。ラップや飽和を使う明確な理由がある場合だけ、チェックしない動作を選びます。
意図はコードに表れます
動作ごとに専用の記号があるため、読み手はオーバーフロー時の意図を一目で理解できます。何も推測する必要はなく、演算子が明示します。
確認問題
u8のカウンターを255から0へ一周させたいとします。どの演算子を使いますか。
まとめ:オーバーフローの動作を選ぶ
通常の算術はトラップし、%接尾辞はラップし、|接尾辞は飽和します。意図的に選択すれば、オーバーフローが予期せず発生することはありません。🛡️
よくある質問
「オーバーフロー:+、+%、+|の違い」レッスンは無料ですか?
はい。「オーバーフロー:+、+%、+|の違い」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「オーバーフロー:+、+%、+|の違い」で何を学びますか?
トラップ、ラップ、飽和を伴う算術を学びます。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「オーバーフロー:+、+%、+|の違い」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 算術演算子と比較演算子
- オーバーフロー:+、+%、+|の違い
- ビット演算子
- ブール論理と短絡評価