C/C++では、int型を利用して真偽を表す。0であれば偽であり、それ以外はすべて真である。
value(int) | true/false |
---|---|
0 | false |
1 | true |
1011 | true |
-1 | true |
if(条件式) 式1;
else 式2;
条件式が真(True)のとき式1が実行され、条件式が偽(False)のとき式2が実行される。
また、else文以下は無くてもよい
演算子 | 意味 |
---|---|
a == b | aとbが同じ値 |
a != b | aとbが違う値 |
a < b | aはb未満 |
a > b | aはbよりも大きい |
a <= b | aはb以下 |
a >= b | aはb以上 |
a && b | aかつb |
a || b | aまたはb |
!a | aではない |
while(条件式) 式;
while文: 条件式が真の間、式を繰り返し実行する。また、毎回式を実行する前に条件式を評価する。
do 式 while(条件式);
do-while文: 条件式が真の間、式を繰り返し実行する。ただし、毎回式を実行した後に条件式を評価する。
for(初期化式; 条件式; 終了式) 式;
- 初期化式を実行する。
- 条件式を評価し、真ならループ内、偽ならループ外へ
- 式を実行する
- 終了式を実行する
- 3へ再び戻る
また、初期化式、条件式、終了式は省略することも可能
for(;;);
/* は */
while(1);
/* と同じ挙動をする */
breakはfor/whileループから即時脱出する
int i = 10;
while(1){
if(i < 0) break; /* iが0未満になったらループを脱出する。 */
i--;
}
for(i = 0; 1; i++){
if(i => 5) break; /* iが5以上になったらループを脱出 */
}
continueは今のループをそれきりで終了し、次のループへ処理を移す
int i = 0;
while(i < 20){
i++;
if(i % 2 == 0) continue; /* iが偶数なら以下の処理をスキップ */
printf("%d", i);
}
/* => 1, 3, 5, 7, 9, ... */
srand(seed): 乱数をseedで初期化する
rand(): 0からRAND_MAXまでの乱数(整数)を返す
※正確には乱数ではなく疑似乱数なので、seedに毎回同じ値を設定するとrand()は同じ値を吐く
scanf(フォーマット, 変数ポインタ, ...);
/*
フォーマット
- %d : int
- %f : float
- %lf : double
- %c : char
- %s : char* / char[]
*/
フォーマットにしたがって残りの変数に値を代入していく
ex)
scanf("%d%d", &a, &b); /* <= "12 24" */
printf("%d %d", b, a); /* => "24 12" */
※VisualStudio(VC++)を利用している人は、scanfを使おうとするとコンパイルエラーが出ると思うので、scanf_s()又は#define _CRT_SECURE_NO?WARNINGSを利用してください
scanf_s()
int integer;
scanf_s("%d", &integer);
define
#define _CRT_SECURE_NO_WARNINGS
int main(void){
int integer;
scanf("%d", &integer);
}
ある変数が、case以下と同じ時にそのラベルにジャンプする
switch(変数){
case 値01:
式01
break;
case 値02:
式02
break;
default:
式03
}
もし変数が値01と同じなら
=> 式01が実行される
もし変数が値02と同じなら
=> 式02が実行される
もし変数が値01/値02と違ったら
=> 式03が実行される
ただし、breakを書くのを忘れると、breakに突き当たるまで(又は}に突き当たるまで)式を実行する。
switch(val){
case 0:
statement01
case 1:
statement02
case 2:
statement03
default:
statement04
}
上の例ではbreakを書いていないので、例えば変数が2だとすると、statement03,04が実行される
#define 定義名 値
コンパイル時にプログラム内の定義名を値に置き換える
プログラム内に、唐突に数値が出てくると何を示しているかがわからなくなるので、名前を付けることによって、なんの値であるかを示す
※defineは正確にはC/C++ではなく、プリプロセッサという