第3回 データ型・演算子・式 変数名 データ型・サイズ 定数 宣言 算術演算子 型変換 関係演算子と論理演算子 インクリメント・デクリメント演算子 ビットごとの演算 代入演算子と式 条件式 優先度と評価順序 変数名 変数名と記号定数名のルール 名前は英字と数字で作られる 第1字は英字でなければならない _(アンダースコア)は、英字に含まれる 伝統的に 変数名は、小文字 定数名は、大文字 予約語(int, float, if, else,for,while などの文法で予約され たもの)を使用してはならない 型名とサイズ C言語で扱う基本データ型 型名 サイズ 扱えるデータ の範囲 char 1 byte -128 ~127 int float double 16 or 32 bit (処理系依存) -32768~32767 か -2147483648~ 2147483647 説明 1文字(文字コード)分の変数を格納で きる型 整数 32 bit およそ10-38~1038 (有効桁7桁) 単精度浮動小数点 64 bit およそ10-308~10308 (有効桁15桁) 倍精度浮動小数点 修飾子: short, long, signed, unsigned 変数の数値表現 - int 型(32bit)の場合 31 30 0 4 Bytes MSB: 符号(正:0, 負:1)を示すビット LSB • 数値は2の補数で表現される • 符号無しの場合は、unsigned を前につける 定数 整数定数 ... int 型として用意される 少数定数 ... 修飾子がない限り、double型 long の整数定数 ... 数値の最後にLをつける unsignedの整数定数 ... 数値の最後にUをつける 文字定数 ... 単一引用符(':シングルクォート)に囲まれた一 字の該コンピュータの文字セットの文字の値が入る cf. ) ASCII コード 文字列定数 ... 2重引用符(": ダブルクォーテーション)に囲ま れた0個以上の文字の列。文字列の最後'\0'が挿入される 列挙定数 ... 整数定数のリスト。値を指定されていない場合 は、最後に指定された数値から順番に1ずつ増えた値が設 定される。 enum boolean { NO, YES }; 宣言 全ての変数は、使用する前に宣言する必要 がある 宣言は [ 型名 ] <変数名>; 同じ型の変数をまとめて宣言することができ る(,で区切る) int a, b, c; 変数の初期化 変数は、宣言時に値(初期値)を設定することができ る(初期化という) 例) int 変数 a に 初期値 0 を設定する a = 0; 初期化と代入は違う 初期化は、コンパイラが変数を用意するときに設定される 値 代入は、ユーザの文によって、値が書き込まれる 初期化しない場合の変数の値は、不定値になる バグの温床になるため、なるべく初期化して使う 算術演算子 2項算術演算子 + , -, *, / , %(剰余演算子:モジュロ) %は、float やdouble には適用できない 関係演算子 関係演算子 >, 等値演算子 >=, < , <= ==, != 関係演算子は算術演算子より優先度が低い 論理演算子 2項論理演算子 &&(かつ), || (または) 評価は左から右にされ、真か偽の結果が得 られた時点で終わる &&は||よりも優先度が高い 単項論理演算子 ! (否定) ... 真偽値を反対に設定する 型変換 型の異なる変数に代入する場合、型変換が 必要になる場合がある 暗黙の型変換:2つの被演算数の型が異なる ときは、暗黙的に型が変換されて揃えられる (テキスト・P54,55) 明示的な型変換をする場合、キャスト演算子 (型名) される を変数の前につけると型変換が明示的に インクリメント演算子、デクリメント演算子 インクリメント演算子: 1加算: ++ ++a; ... a に 1 を加算してから a を参照する a ++; ... a を参照してから 1 を減算する デクリメント演算子: 1減算: - --a; ... a に 1 を減算してから a を参照する a --; ... a を参照してから 1 を減算する ビットごとの論理演算子 & ... ビットごとのAND | ... ビットごとのOR ^ ... ビットごとの排他的論理和(XOR) << ... 左シフト >> ... 右シフト x << n ... n ビットシフト x >> 2 ... n ビットシフト ~ ... 1の補数(単項演算子) 代入演算子と式 i = i + a → i += a と省略してかける たいていの2項演算子は、上のような代入演 算子をもつ +=, -=, *=, /= , %=, <<=, >>= , &=, |=, ^= 条件式 3項演算子? : は、条件式 expr1 ? expr2 : expr3; の式の評価が真ならば、expr2 の値を、偽 であればexpr3 の値を左値に代入 ( a > b )? a : b; expr1 演算子の優先度と評価順序 演算子には、評価順序(優先度)が決められている 例) 乗除算は、加減算よりも優先度が高い 演算子には、それぞれ結合規則の向きが存在する 詳しくは、教科書のP65の表2-1 明示的に評価順序を変える場合は、優先する演算 を括弧()で括る
© Copyright 2024 ExpyDoc