- ゲームプログラム入門:C言語「論理演算の基礎」のご紹介
- ゲームプログラム入門:C言語「論理演算」のご紹介
- 「計算の演算子」のご紹介
- 代入演算子
- 値を1増やしたり減らしたりできる「インクリメント/デクリメント演算子」
- インクリメント・デクリメント演算子の例
- 「比較演算子」のご紹介
- 「論理演算子」について
- 「演算の優先度」について
- 「ゲームプログラミング > C言語入門/基礎」関連ページのご紹介
- シューティングゲーム・関連ページのご紹介
- 歴代名作シューティングゲームのご紹介|まとめ
- 歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
- シューティングゲームの人気シリーズのご紹介
- シューティングゲーム関連ページのご紹介|まとめ
- シューティングゲーム解説ページのご紹介|まとめ
- シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
- シューティングゲーム雑誌/書籍関連のご紹介|まとめ
- 【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
- 【名作RPG】RPGのご紹介│まとめ│
- 【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
- 【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
- TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
- 【TOP】パズルゲームのご紹介
- 【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
- 名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
- 【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
- ジャンル別ゲームタイトルのご紹介│まとめ│
- 【ゲームTOP】ゲーム関連ページのご紹介
- 【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
- 【ホビーTOP】ホビーサイトマップ関連ページのご紹介
ゲームプログラム入門:C言語「論理演算の基礎」のご紹介
「ゲームプログラミング > C言語入門/基礎」関連サイトマップのご紹介
「ゲームプログラミング > C言語入門/基礎」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
ゲームプログラム入門:C言語「論理演算」のご紹介
ゲームプログラム入門:日常生活の出来事を「論理演算」にしてみるをご紹介します。
「計算の演算子」のご紹介
計算に用いる+や-などのことを演算子といいます。演算子を使って実際に計算してみましょう。
数の計算で使う演算子
C言語で数の計算に用いる演算子には次のものがあります。
数の計算で使う演算子のご紹介 | |||
演算子 | 働き | 使い方 | 意味 |
プラス+ | +(足す) | a=b+c |
bとcを足した値をaに代入
|
マイナス- | -(引く) | a=b-c |
bからcを引いた値をaに代入
|
アスタリスク * |
×(かける) | a=b*c |
bとcかけた値をaに代入
|
スラッシュ / |
÷(割る) | a=b/c |
bをcで割った値をaに代入
(cが0のときはエラー) |
パーセント % |
…(余り) | a=b%C |
bをcで割った余りをaに代入
(整数型でのみ有効) |
イコール = |
=代数 | a=b | bの値をaに代入 |
▼計算で使う演算子コード例のご紹介
#include main() { printf("5+5は%dです。¥n",5+5); printf("5-5は%dです。¥n",5-5); printf("5×5は%dです。¥n",5*5); printf("5÷5は%dです。¥n",5/5); printf("5÷3の余りは%dです。¥n",5%3); }
▼実行結果
5+5は10です。 5-5は0です。 5×5は25です。 5÷5は1です。 5÷3の余りは2です。
代入演算子
変数に値を代入する演算子「=」では左辺を変数、右辺を値と見なします。よって、int型の変数aそのものの値を2増やしたいときは次のように書きます。
変数 値
a = a + 2;
代入 aの値に2を足したもの
▼【注意】aがa+2と等しいという意味ではありません。
aの値を2増やすことを、次のように書くこともできます。
a+=2;
「=」や「+=」を代入演算子
「=」や「+=」を代入演算子といいます。代入演算子には他に次のようなものがあります。
「代入演算子」のご紹介 | |||
演算子 | 働き | 使い方 | 意味 |
+= | 足して代入 | a+=b |
a+bの結果をaに代入(a=a+bと同等)
|
-= | 引いて代入 | a-=b |
a-bの結果をaに代入(a=a-bと同等)
|
*= | かけて代入 | a*=b |
a*bの結果をaに代入(a=a*bと同等)
|
/= | 割って代入 | a/=b |
a/bの結果をaに代入(a=a/bと同等)
|
%= | 余りを代入 | a%=b |
abの結果をaに代入(a=a%bと同等)
|
▼「代入演算子の事例」のご紹介
代入演算子の事例をご紹介します。
#include main() { //a=a+10;と書いても同じです。 inta=90; a+=10; printf("90に10を足したら%dです。¥n",a); }
実行結果
90に10を足したら100です。
値を1増やしたり減らしたりできる「インクリメント/デクリメント演算子」
値を1増やす「インクリメント演算子」と1減らす「デクリメント演算子」についてご紹介します。
整数型の値を1つ増やしたり減らしたりする場合に使用
「インクリメント(加算)演算子」、「デクリメント(減算)演算子」は、整数型の変数の値を1つ増やしたり減らしたりする場合に使います。
「インクリメント/デクリメント演算子」のご紹介 | ||||
演算子 | 名称 | 働き | 使い方 | 意味 |
++ | インクリメント演算子 | 変数の値を1増やす | a++ または++a |
aの値を1増やす |
— | デクリメント演算子 | 変数の値を1減らす | a–または–a | aの値を1減らす |
インクリメント・デクリメント演算子の例
#include main() { inta=1; printf("はじめは%dでした¥n",a); //++インクリメント演算子で変数の値を1増やす a++; printf("1増えて%dになりました。¥n",a); a--; printf("1減って%dに戻りました。¥n",a); }
実行結果
はじめは1でした。 1増えて2になりました。 1減って1に戻りました。
インクリメント演算子「a++と++aの違い」について
インクリメント・デクリメント演算子には、それぞれ2種類の書き方があり、++a(–a)の方を前置、a++(a–)の方を後置といいます。
前置と後置では演算を行うタイミングが違う
前置と後置では演算を行うタイミングが異なり、前置の場合は変数の参照より先に、後置の場合は変数の参照より後に演算が行われます。そのため、次のようなことが起こります。
前置では値は2になり、後置では1のまま
int x,a=1; x=++a;
aに1を足した後、xに値を代入する→xの値は2になる
int x,a=1; x=a++;
xに値を代入した後、aに1を足す→xの値は1のまま
インクリメント演算子「a++と++a」の例
#include main() { int a=1,b=1; printf("前置だと%dになります。¥n",++a); printf("後置だと%dになります。¥n",b++); }
実行結果
前置だと2になります。 後置だと1になります。
「比較演算子」のご紹介
条件式を作るときに使う比較演算子を紹介します。
比較演算子とは?
C言語では変数や数などの値を比較して、条件式を作り、その結果によって処理を変えることができます。このとき使う演算子を比較演算子といいます。
条件が成立した場合を「真(true)」成立しない場合を「偽(false)」といいます。
▼【注意】2つの記号で1つの働きをしているものはスペースなどで区切らないでください。
「比較演算子」のご紹介 | |||
演算子 | 働き | 使い方 | 意味 |
== | =(等しい) | a==b | aとbは等しい |
< | <(小なり) | a<b | aはbより小さい |
> | >(大なり) | a>b | aはbより大きい |
<= | <=(以下) | a<=b | aはb以下 |
>= | ≧(以上) | a>=b | aはb以上 |
!= | ≠(等しくない) | a!=b |
aとbは等しくない
|
「式が持っている値」について
条件式や代入式はそれ自体が値を持っています。
例えば、条件式が「偽」である時、条件式そのものは「0」という値を持ちます。条件式が「真」の時は条件式は「1」になります。
▼代入式では、代入した値がその代入式全体の値になります。
(a=3)
()でくくって代入式全体を表します。
▼「式が持っている値」事例コードのご紹介
#include main() { int a=10,b=20; printf("a=%d b=%d¥n",a,b); printf("ab ・・・ %d¥n",a>b); printf("a==b ・・・%d¥n",a==b); printf("a=b ・・・ %d¥n",(a=b));
実行結果
a=10 b=20 ab ・・・ 0 a==b ・・・ 0 a=b ・・・ 20
「論理演算子」について
複数の条件式を組み合わせて、より複雑な条件式を作ることができます。
論理演算子とは?
複数の条件を組み合わせて、より複雑な条件を表す時に使うのが「論理演算子」です。
論理演算子の種類
論理演算子には次の3種類があります。
論理演算子の種類 | |||
演算子 | 働き | 使い方 | 意味 |
&& | かつ | (a >=10) && (a <50) | aは10以上かつ50未満 |
|| | または | (a == 1)(a == 100) | aの値が1か100 |
! | 〜ではない | !(a == 100) | aは100ではない |
「論理演算子」のイメージ
条件A、Bがあるとき、論理演算子の働きを図示すると、次のようになります。
条件Aと条件Bの両方をみたす(A&&B)
条件Aと条件Bのどちらかをみたす(A||B)
条件Aではない(!A)
複雑な論理演算の条件式
少し複雑な論理演算の例を見てみましょう。各演算子は優先度に従って処理されますが、意図的に関係をはっきりさせたいときは、()を使います。
「aが50以上100未満である」
(50 <=a)&&(a<100)
50<=a<100とは書けません。
「bが0でも1でもない」
//「b=20またはb=1」ではない !((b == 0) || (b == 1)) //b=0ではなく、b=1でもない !(b == 0) && !(b ==1) //b≠0かつ、b≠1である (b != 0) && (b !=1)
「条件つき代入」のご紹介
「?」と「:」の2つの記号を使って、条件により「x」に代入する値を変えることができます。次のように書きます。
//a = 条件が真のときの値 //b = 条件が真のときの値 x = (条件)? a : b
▼「条件つき代入」事例文のご紹介
0≦a≦100であればaの値を、そうでないときは0を表示します。
#include main() { int a = 30, x; x = (0<= a && a <= 100)? a : 0 ; printf("%¥n", x); }
実行結果
30
C言語の計算で重要な「変数の型」
C言語で計算を行う場合、変数の型がとても重要になります。ここでは型の変換についてご紹介します。
整数どうしで計算すると、その結果は整数
C言語では整数どうしで計算すると、その結果は整数になるという決まりがあります。そのためm次のようにちょっと変なことが起きてしまいます。
3÷2の結果を求める(誤)
整数 整数 整数 3 / 2 → 1
▼整数になるように自動的に小数点以下が切り捨てられてしまいます。
正しい値である1.5を算出するには、「実数表記」にして計算する必要があります。
3÷2の結果を求める(正)
実数 実数 実数 3.0 / 2.0 → 1.5
▼「変数の型」の事例文
#include main() { printf("3÷2 = %d¥n",3 / 2); printf("3÷2 = %f¥n",3.0 / 2.0); printf("3÷2= %f¥n",3.0 / 2); printf("3÷2= %f¥n",3 / 2.0); }
実行結果
実数を含む計算の場合、整数は自動的に実数に変換されます。
3÷2=1 3+2=1.500000 3÷2=1.500000 3+2=1.500000
整数どうしの演算は、一番範囲の広い型に変換される
整数どうしの演算では、一番範囲の広い型に変換されます。
short s = 536; //charの範囲は-128~127 char c = 12; int a= s + c; //a=548になります。
異なる精度の型どうしの代入
値の範囲が異なる型の変数どうしで代入するときは、十分気をつける必要があります。
型の上限を超えた数を代入すると「オーバーフロー」になる
型の上限を超えた数を代入すると、あふれたビットは無視されます。これをオーバーフローといいます。
unsigned char c = 1000;
▼cの値は232になってしまいます。
符号なしの変数に符号つきの値を入れると?
符号なしの変数に符号つきの値を入れると、ビット情報はそのままでも、符号なしと解釈します。
unsigned char c = -3;
▼cの値は253になってしまいます。
キャスト演算子「(int)」
「(int)」のように、型名を()でくくったものを値や変数の前に書くと、それらを特定の型に変換することができます。この操作を「型キャスト」といい、()を「キャスト演算子」といいます。
「キャスト演算子文」のご紹介
#include main() { //float型にキャスト printf(" 3÷2 = %f¥n",3 / (float)2); }
実行結果
321.500000 //2で割った答えを算出します。
「演算の優先度」について
基本的な演算子が一通り登場したところで、演算子の優先順位をご紹介します。
基本的に式は左から右へ計算していきますが、「×は+よりも先に計算する」や「()の中を先に計算する」など、演算には優先順位があります。
演算子ごとの優先順位と左右の順番
式の中に複数の演算子が含まれる場合、C言語では次の優先順位に基づいて計算します。また、同じ順位の演算子が並んでいるとき、式の左右どちらから適用していくかも決まっています。
「演算の優先度」のご紹介 | |||
優先 順位 |
演算子 | ⇨ | ⇦ |
1
|
() [] . (ピリオド、構造体のメンバの選択) | ⇨ | |
-> | |||
++(後置)–(後置) | |||
2
|
! (階乗/エクスクラメーションマーク ) | ⇦ | |
++(前置) –(前置) | |||
+(符号) -(符号) | |||
&(ポインタ) *(ポインタ) | |||
sizeof | |||
3 | キャスト演算子 | ⇦ | |
4 | *(乗算/アスタリスク) /(除算/スラッシュ) %(剰余/パーセント) |
⇨ | |
5 | + - | ⇨ | |
6 | << >> | ⇨ | |
7 | < <= > >= | ⇨ | |
8 | == != | ⇨ | |
9 | &(ビット積) | ⇨ | |
10 | ^ (累乗/キャレット) | ⇨ | |
11 | | | ⇨ | |
12 | && | ⇨ | |
13 | || | ⇨ | |
14 | ?:(三項演算子) | ⇦ | |
15 | = += -= *= /= %= &= ^= <<= >>= | ⇦ | |
16 | .(カンマ) | ⇨ |
「式の読み方」について
いろいろな演算子の優先順位を見てみましょう。
四則演算は同じ優先度なら左から
四則演算は同じ優先度なら左から計算します。
「+」や「ー」より「*」や「/」の方が先
「+」や「ー」よりも「*」や「/」の方を先に計算します。
()が優先
()でくくると、その中を先に計算します。
右の「代入」が先
右の「代入」から先に実行します。abcの値はいずれも1になります。
「=」より「==」が先
aとbが等しければ1を、異なれば0をcに代入します。
▼複雑な式は()で読みやすく
複雑な式を書くときは、適当な位置で()を使うと読みやすくなります。
▼「式の読み方」事例文のご紹介
#include main() { printf(" 2X8-6÷2 = %d¥n",2*8-6 / 2); printf(" 2X(8-6)÷2 = %d¥n",2*(8-6) / 2); printf(" 1-2+3 = %d¥n",1-2+3); printf(" 1-(2+3) = %d¥n",1-(2+3)); }
実行結果
2X8-6÷2 = 13 2X(8-6)+2 = 2 1-2+3 = 2 1-(2+3) = -4
「ゲームプログラミング > C言語入門/基礎」関連サイトマップのご紹介
「ゲームプログラミング > C言語入門/基礎」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「ゲームプログラミング > C言語入門/基礎」関連ページのご紹介
「ゲームプログラミング > C言語入門/基礎」関連ページをご紹介します。
【STG】シューティングゲーム・サイトマップのご紹介
80年から2000年代のシューティングゲームについてご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
シューティングゲーム・関連ページのご紹介
シューティングゲーム・関連ページをご紹介します。
歴代名作シューティングゲームのご紹介|まとめ
歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
シューティングゲームの人気シリーズのご紹介
シューティングゲーム関連ページのご紹介|まとめ
シューティングゲーム解説ページのご紹介|まとめ
シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
シューティングゲーム雑誌/書籍関連のご紹介|まとめ
【ゲームジャンル別】サイトマップのご紹介
【ゲームジャンル別】サイトマップをご紹介します。
ゲームジャンル別サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 |
||||
ゲームジャンル別TOP >関連ページ│名作│ランキング | ||||
【ジャンル別関連ページ】 アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【アクション】プラットフォーム│対戦アクション│FPS│TPS│STG│フライト 【アドベンチャー】AVG│ 【RPG】RPG│SRPG│ARPG 【SLG】SLG│ストラテジー│ターン制SLG│RTS 【レース】レース 【スポーツ系】スポーツ│プロレス 【パズル】 【テーブル】麻雀 |
||||
【ジャンル別】おすすめ評価ランキング アクション│AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【歴代傑作・神ゲー(2021~1996年)】99~94点│93~92点│91点│90点 ■【アクション系ゲーム】■ アクション│プラットフォーム│対戦アクション│FPS│TPS│フライト│ 【対戦アクション】一覧│98~80点│79~70点 【FPS】まとめ│90点以上│89~86点│85~83点│82~80点 【アドベンチャーゲーム】 ■【RPG系】■ RPG│SRPG│ARPG 【RPG】一覧│傑作(96~90点)│89~85点│84~82点│81~80点│ ■【シミュレーション系ゲーム】■ SLG│ストラテジー│ターン制SLG│RTS│街づくりSLG ■【レース】■ ■【スポーツ系ゲーム】■スポーツ│プロレス ■【パズル】 |
||||
シリーズ・テーマ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲームジャンル別・関連ページのご紹介
ゲームジャンル別・関連ページをご紹介します。
【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
【格ゲー・名作】アーケード・家庭用・格闘ゲームのご紹介~名作(173 本)・全タイトル(1462本)のご紹介
【名作STG】シューティングゲームのご紹介
【AVG】アドベンチャーゲームのご紹介│まとめ│
【名作RPG】RPGのご紹介│まとめ│
【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
【TOP】パズルゲームのご紹介
ゲームTOPサイトマップ
ゲームTOPのサイトマップをご紹介します。
【ゲームTOP】サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 | ||||
■ランキングTOP > ハード│ソフト(売上(世界│国内)│海外評価) ■傑作・名作ゲームTOP > ■ゲーム機種別TOP > 据置│携帯│AC│PC│周辺機器 ■ジャンル別TOP > アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲーム関連ページのご紹介
ゲーム関連ページをご紹介します。
【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
ジャンル別ゲームタイトルのご紹介│まとめ│
コペンギン・サイトマップ
コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介
コペンギン関連ページをご紹介します。