地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日 三井真吾 メール:smitsui@staff.kanazawa-u.ac.jp 居室:工作実習棟 HP:佐々木敏彦研究室HP http://next.w3.kanazawa-u.ac.jp/
コンパイル 任意の場所にworkフォルダを作る。 メモ帳でtest.cというファイルを作る。 フォルダ上で「Shift」を押しながら右クリック。 コマンドウィンドウをここで開く。 gcc␣test.c でコンパイル。 .\a.exe で実行 Hello World!と出ましたか? test.c #include␣<stdio.h> int main(){ printf(“Hello World!!\n”); return␣0; } 課題:以下を出力して下さい。 私は○○○○です。 ○○○○専攻です。 学籍番号は、○○○○です。
変数 int␣data; //int型のdataと言う名前の変数を定義。 data = 10; //などと書けば、いつでも整数を代入できる。 int␣toshi = 20; printf(“私は%d歳です。”, toshi); toshi = 21; ←toshi = toshi + 1; でもOK! 出力:私は20歳です。私は21歳です。 ⇒算術演算子へ 型 データ型 バイト幅 扱える数値の範囲 char 文字型 1 -128~127 int 整数型 2 -32768~32767 long 倍長整数型 4 -2147483648~2147483647 float 単精度浮動小数点型 (±)3.4E-38~3.4E+38 (7桁) double 倍精度浮動小数点型 8 (±)1.7E-308~1.7E+308 (15桁) 整数 小数
算術演算子 インクリメント・デクリメント演算子 演算 演算子 例 意味 加算 + a + b a に b を加える 減算 - a - b 乗算 * a * b a に b をかける 除算 / a / b a を b で割る 剰余算 % a % b a を b で割った余り インクリメント・デクリメント演算子 演算 演算子 例 意味 インクリメント ++ a++ a に 1 を加える(後置演算) ++a a に 1 を加える(前置演算) デクリメント -- a-- a から 1 を引く(後置演算) --a a から 1 を引く(前置演算)
配列 int␣no[5]; //int型のnoと言う名前の配列(箱)を5個定義。 出来る配列は、 no[0], no[1], no[2], no[3], no[4]の5個。 初期化 int␣no[5] = {10, 20, 30, 40, 50}; //5個別々に初期化。 int␣no[5] = {0}; //全て0で初期化。 代入 no[3] = 41; //変数と同様に扱える。 no[2] = no[0] + no[1];
型変換 代入時 float␣pi = 3.14159; int␣x = pi; xは、小数点以下が切り捨てられて、3となってしまう。 式中 int␣i = 5; long␣l = 10; float␣f = 1.23; float␣kotae = i * l + f; // i + lはlong、+ fはfloatに拡張される。 float␣kotae = i / l + f; // i / lはlongまでしか拡張されず計算できない。
明示的型変換 int␣a = 5; int␣b = 2; float␣c = a / b; 右辺はint同士の計算であるため小数点以下は捨てられてcに代入される。 c = 2となる。 float␣c = (float) a / b; 明示的に右辺をfloatへ変換することが出来る。 c = 2.5となる。
変換指定 float Fujisan = 3776.12; printf(“富士山は%fメートルです。\n”, Fujisan); printf(“富士山は%dメートルです。\n”, Fujisan); printf(“富士山は%eメートルです。\n”, Fujisan); 変換指定文字 意味 使われるデータ型 %c 1文字として出力する 文字型 %d 10進数で出力する 整数型 %x 16進数で出力する %o 8進数で出力する %f [-]dddd.ddddddの形式で出力する 浮動小数点型 %e 指数形式で出力する %s 文字列として出力する 文字列
変換指定 (小数) float Fujisan = 3776.12; printf(“富士山は%.fメートルです。\n”, Fujisan); printf(“富士山は%.1fメートルです。\n”, Fujisan); printf(“富士山は%8.1fメートルです。\n”, Fujisan); printf(“富士山は%08.1fメートルです。\n”, Fujisan); 変換指定文字 意味 %.f 小数点以下なしで出力する %.1f 小数点以下1桁で出力する %8.1d 幅8、小数点以下1桁で出力する %08.1d ゼロ詰め、幅8、小数点以下1桁で出力する
変換指定 (整数) int Fujisan = 3776; printf(“富士山は%6dメートルです。\n”, Fujisan); printf(“富士山は%-6dメートルです。\n”, Fujisan); printf(“富士山は%+6dメートルです。\n”, Fujisan); printf(“富士山は%06dメートルです。\n”, Fujisan); 変換指定文字 意味 %6d 幅6で右に寄せて出力する %-6d 幅6で左に寄せて出力する %+6d +を付ける %06d ゼロ詰めで右寄せで出力する