0Pricing
Zig Academy · レッスン

オーバーフロー:+、+%、+|の違い

トラップ、ラップ、飽和を伴う算術を学びます。

「オーバーフロー:+、+%、+|の違い」は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; // 255

3つの選択肢、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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 算術演算子と比較演算子
  2. オーバーフロー:+、+%、+|の違い
  3. ビット演算子
  4. ブール論理と短絡評価
← Zig Academyに戻る