変数の型と宣言 数理情報システム工学科 担当: 汐月哲夫 2015/10/1 プログラミング方法論 [email protected] 1 変数宣言 1:メモリ上に領域(サイズ)を確保する 2:データの意味付(型)を決める 3:メモリの位置(番地)と名前(変数名)を対応させる 4:領域を初期化する(省略されることもある) 2015/10/1 プログラミング方法論 [email protected] 2 ソースリスト 0x0000 メモリ int hensu1; 変数対応表(symbol table) サイズ 4 変数名 hensu1 型 int 4 byte アドレス 0x0100 0x0100 0x0103 0xffff 2015/10/1 プログラミング方法論 [email protected] 3 変数の型 指定子 型の名称 サ イ ズ 値 (バイト) char unsigned char short int long long long unsigned short unsigned int unsigned long unsigned long long float double void (型指定子) * 文字型 整数型 浮動小数点型 型無し ポインタ型 1 1 2 4* 4 8 2 4* 4 8 4 8 -128~127 0~255 -32768~32767 -2147483648~2147483647 -2147483648~2147483647 0~65535 0~4294967295 0~4294967295 0~+-3.40e38 0~+-2.23e308 4* * は環境によって異なる 2015/10/1 プログラミング方法論 [email protected] 4 変数のサイズを調べる /* filename: size.c */ /* coded by T.Shiotsuki, Sep.3,1999 */ File name= size01.c #include <stdio.h> char mes[]=“RIST\n”; int main(void) { int i; printf(“%d \n”, sizeof(i)); printf(“%d \n”, sizeof(mes)); return 0; } 2015/10/1 プログラミング方法論 [email protected] 5 変数のサイズを調べる /* filename: size02.c */ /* coded by T.Shiotsuki, Sep.3,1999 */ ここにさまざまな型指定 #include <stdio.h> 子を入れてみる File name= size02.c int main( void ) { printf(“sizeof(char) = %d\n”, sizeof(char)); printf(“sizeof(int) = %d\n”, sizeof(int)); printf(“sizeof(long) = %d\n”, sizeof(long)); printf(“sizeof(long long) = %d\n”, sizeof(long long)); return 0; } 2015/10/1 プログラミング方法論 [email protected] 6 文字型(char) • 1バイト • 対応づけ – アスキーコードの文字(漢字コードは不可) – 1バイト長の固定小数点 – 8ビットのフラグ • 演算操作 – 整数型と同じ(算術、論理、ビット) • printf の書式指定 – 1文字出力 2015/10/1 %c プログラミング方法論 [email protected] 7 アスキーコード(ASCII) 下位4ビット 0 1 2 3 4 5 6 7 8 9 a b c d e f 上 位 3 ビ ッ ト 0 1 2 3 4 5 6 7 NUL SOH EXT EOT EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US ! 1 A Q a q “ 2 B R b r # 3 C S c s $ 4 D T d t % 5 E U e u & 6 F V f v ‘ 7 G W g w ( 8 H X h x ) 9 I Y i y * : J Z j z + ; K [ k { , < L ¥ l | = M ] m } . > N ^ n ~ / ? O _ o SP 0 @ P ` p DEL 7 6 5 4 3 2 1 0 パリティビット 2015/10/1 上位 下位 プログラミング方法論 [email protected] 8 制御文字 制御文字 NUL BEL BS HT LF VT FF CR ¥ ? ‘ “ 8 進数 16進数 2015/10/1 値 0x00 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x5c 0x3f 0x27 0x22 C言語 ¥0 ¥a ¥b ¥t ¥n ¥v ¥f ¥r ¥¥ ¥? ¥’ ¥” ¥ooo ¥xhh 意味 文字列の終端 ベル バックスペース 水平タブ 改行 垂直タブ 改ページ 復帰 バックスラッシュ(円記号) 疑問符 単引用符 引用符 プログラミング方法論 [email protected] 9 整数型(int, long,...) • 2、4、8バイト – (char を1バイト長の整数型とみなせば 1,2,4,8) • 演算: – 固定小数点2進数としての算術計算(arithmetic operation) – 論理値としての論理演算(logical operation) – フラグの集合としてのビット演算(bit operation) • 表現できる範囲と負数の取り扱い – 符号つき整数(signed)と符号無し整数(unsigned) 2015/10/1 プログラミング方法論 [email protected] 10 整数型変数の入出力 • printf() ,scanf()の書式指定 2015/10/1 表示形式 対象データの型 printf の書式指定 文字 文字型 %c 符号つき10進数 文字型、整数型 %d, %i 符号無し10進数 文字型、整数型 %u 16 進数 文字型、整数型 %x 8 進数 文字型、整数型 %o 注意: ANSI 規格では %l 修飾が規定されていますが、 gcc では採用していません 。 プログラミング方法論 [email protected] 11 2進数の算術演算 一桁の加算 繰上がりのある計算 1111 0+0=0 0+1=1 1+0=1 1+1=10 2015/10/1 101101 +) 1011 --------------111000 プログラミング方法論 [email protected] 12 2進数 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 2015/10/1 10進数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 16進数 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 2進数 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 プログラミング方法論 [email protected] 10進数 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 16進数 1 2 4 8 10 20 40 80 100 200 400 800 1000 13 固定小数点表現 • unsigned char の例 7 6 5 4 3 2 1 0 1 0 1 1 0 1 0 1 1x27+0x26+1x25+1x24+0x23+1x22+0x21+1x20 =128+32+16+4+1 = 181 • (signed) char の例 10110101 +) 0 1 0 0 1 0 1 1 100000000 2015/10/1 =181 = 75 =256(mod 256)=0 プログラミング方法論 [email protected] -75 14 signed と unsigned 000 000 111 001 7 0 1 6 110 0 1 010 010 110 -2 4 3 2 -3 011 101 ー4 3 101 100 011 100 符号つき整数 signed 符号なし整数 unsigned 2015/10/1 001 -1 2 5 111 最上位ビット=符号ビット プログラミング方法論 [email protected] 15 ディジタルの計算 (論理計算) TRUE=T (真) FALSE=F(偽) とすると 論理積 T && T=T T && F=F F && T=F F && F=F 2015/10/1 論理和 論理差 T || T=T T || F=T F || T=T F || F=F T ^ T=F T ^ F=T F ^ T=T F ^ F=F プログラミング方法論 [email protected] 否定 !T=F !F=T 16 ディジタルの計算 (ビットごとの論理計算) 論理積 論理和 論理差 否定 0 & 0=0 0 & 1=0 1 & 0=0 1 & 1=1 0 | 0=0 0 | 1=1 1 | 0=1 1 | 1=1 0 ^ 0=0 0 ^ 1=1 1 ^ 0=1 1 ^ 1=0 ~0=1 ~1=0 2015/10/1 プログラミング方法論 [email protected] 17 論理演算 論理積 論理和 0 1 0 0 0 1 0 1 論理差 2015/10/1 0 1 0 0 1 1 1 1 否定 0 1 0 1 0 0 1 1 0 1 1 0 プログラミング方法論 [email protected] 18 浮動小数点型 C言語の表記 -123.45e3 -123.45×103 - 3 数学的表記 123.45 正規化 - 6 符号 指数部 2015/10/1 0.12345 内部表現 仮数部(小数部) プログラミング方法論 [email protected] 19 IEEE の浮動小数点型 - 6 符号 指数部 0.12345 内部表現 仮数部(小数部) 1 8 23 =32 bit = float 1 11 52 =64 bit = double NaN(Not a Number),±∞をあらわす工夫がなされている 指数部のビット長を動的に変更できる型も提案されていてる (URR: Universal representation of real number) 2015/10/1 プログラミング方法論 [email protected] 20
© Copyright 2024 ExpyDoc