Menu
CoddyTech

intの限界

CoddyのArduinoジャーニー「はじめての回路」セクションの一部。レッスン 12/22。

変数は、ボードのメモリにある小さなオン/オフスイッチであるビットを、決まった数だけ使って格納されます。Unoでは、intは16ビットなので、-32,768から32,767までの数値しか格納できません。

上限を超えても値は大きくならず、下限に戻ります。32,767に1を足すと-32,768になります。これはオーバーフローと呼ばれ、スケッチは警告を出しません。

より大きな数値には、ビット数の多い型を使います。

long big = 100000;           // -2,147,483,648 から 2,147,483,647 まで
unsigned long huge = 3000000000;  // 0 から 4,294,967,295 まで

longは32ビットです。unsigned longも32ビットですが、負の数を扱わないため、2倍の大きさまで扱えます。カウントや時間に適しています。

longはintの2倍のメモリを使います。また、Unoで変数に使えるメモリは2048バイトしかないため、数値が小さい範囲に収まる場合はintを使いましょう。

challenge icon

チャレンジ

中級

スターターは1秒間に20回、countに1000を加算します。Runを押して、32,000を超えた後に値が負になるのを確認しましょう。

  • countの型を変更して、100,000を超えて数えられるようにしましょう

その後、Checkを押します。

自分で試してみよう

int count = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  count = count + 1000;
  Serial.println(count);
  delay(50);
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

はじめての回路のすべてのレッスン

自分で練習してみよう: Arduinoプレイグラウンド