連載
【問題6】while文とfor文――繰り返し処理を理解しよう:完全マスター! 組み込みC言語プログラミング(7)(3/3 ページ)
C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回は、繰り返し処理に用いられるwhile文とfor文を使い、2の0乗から15乗までの数値を表示するプログラムを作成します。
整数とその有効範囲
制御式のnを16ビットの符号なし整数とすると、nに格納できる数は、0から65535(215−1)で、問題6のプログラムを少し簡略化できます。そのプログラムが「twice2.c」で、制御式は単にnとなっています。
「unsigned short int」とは、16ビットの符号なし整数という意味です。
ここで、nは1、2、4、8……と、繰り返し2倍されていきますが、65536(216)にはなりません。16ビットの符号なし整数では、32768の次で0になってしまうのです。
#include <stdio.h> int main(void) { unsigned short int n; n = 1; while (n) { printf("%d\n", n); n *= 2; } }
問題6の解答「twice2.c」
C言語では8ビット、16ビット、32ビット(C99以降では64ビット)の整数を、使い分けることができます。組み込みCプログラムでは必修の知識です。
特に、int型は曖昧(あいまい)で、コンパイラによって、32ビットであったり、16ビットであったりします。組み込みCプログラムでは、整数とその有効範囲に注意しましょう!
型名 | 大きさ | 値の許容範囲 | |
---|---|---|---|
符号付き整数型 | signed char(またはchar) | 8ビット | −128〜127 |
signed int(またはint) | 32ビット | −2147483648〜2147483647 | |
(16ビット) | (−32768〜32767) | ||
signed short int(またはshort、short int) | 16ビット | −32768〜32767 | |
signed long int(またはlong、long int) | 32ビット | −2147483648〜2147483647 | |
符号なし整数型 | unsigned char | 8ビット | 0〜255 |
unsigned int | 32ビット | 0〜4294967295 | |
(16ビット) | (0〜65535) | ||
unsigned short int(またはunsigned short) | 16ビット | 0〜65535 | |
unsigned long int(またはunsigned long) | 32ビット | 0〜4294967295 | |
表 C言語の整数型と値の許容範囲 |
問題7:整数を入力し2進数で表示
それでは、次回の宿題です。
Copyright © ITmedia, Inc. All Rights Reserved.