From 83eb43dff6b69de1e4d5a54fb42ea61798d93a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9A=E3=83=8E=E5=8A=A9=EF=BC=88Hacnoshuke=EF=BC=89?= <87632190+miko-misa@users.noreply.github.com> Date: Thu, 2 May 2024 18:21:22 +0900 Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=A4=89=E6=95=B0=E3=81=A8=E3=82=B3?= =?UTF-8?q?=E3=83=A1=E3=83=B3=E3=83=88=E3=81=AB=E3=81=A4=E3=81=84=E3=81=A6?= =?UTF-8?q?=E3=81=AE=E6=83=85=E5=A0=B1=E8=BF=BD=E5=8A=A0=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [fix] 変数とコメントについての情報追加 自分の経験上,わかりにくかった部分を補足. * [fix] ちょっとした表記ブレの解消 * [hotfix] 実は,整数型と浮動小数点数型は暗黙的キャスト可能なんです 反省してます. * [fix] 「文字」を「文字列」に * [fix] 「変数」の説明を提案 * [fix] 代入演算子 Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com> * [] Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com> * [fix] パズドラ * [fix] 変数の説明の表現を修正 --------- Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com> Co-authored-by: comavius <123385705+comavius@users.noreply.github.com> --- docs/text/chapter-2/hello-world.md | 6 +++--- docs/text/chapter-2/input.md | 2 +- docs/text/chapter-2/variables.md | 32 ++++++++++++++++++++---------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/docs/text/chapter-2/hello-world.md b/docs/text/chapter-2/hello-world.md index 7bfc6bc..e209da9 100644 --- a/docs/text/chapter-2/hello-world.md +++ b/docs/text/chapter-2/hello-world.md @@ -31,7 +31,7 @@ int main() { ``` コンソールに `Hello traP!` を出力する。 -`"` で囲うのは、これが文字列なのか、命令なのかを区別するため。(VSCode を使っていれば `"Hello traP!"` +`"` で囲うのは、これが文字列なのか、命令なのかを区別するため。(`VSCode`を使っていれば `"Hello traP!"` の部分だけ色分けされているはず。) `endl` についても 2.1.1. で解説する。 ```cpp:no-line-numbers @@ -125,11 +125,11 @@ C++ では、`;` を多用する。`;` は「命令の区切り」を示す。C+ `cout` と記述しているが、本来ならば `std::cout` と書く必要がある。 `std::` が何を意味しているかは深くは解説しないが(std = standard くらいは知っても良いだろう)、毎回`std::` と書くのは少し不便なので、これを書かない(省略する)という宣言をしている。 -## 2.1.5. コメントアウト +## 2.1.5. コメント <<<@/text/chapter-2/hello-world.cpp{6 cpp:line-numbers} -行の先頭に `//` と書く事でコメントを書く事ができる。 +行の先頭に `//` と書く事でその行をコメントにすることができる。コメントはコンパイル時には無視される。 メモに使うと良い。 ## 2.1.6. main 関数 diff --git a/docs/text/chapter-2/input.md b/docs/text/chapter-2/input.md index b32ff50..8201cc2 100644 --- a/docs/text/chapter-2/input.md +++ b/docs/text/chapter-2/input.md @@ -32,7 +32,7 @@ int main() { * 上記のコードで「10」を入力したときに出力される値は?出力を予想したら、実行してみましょう。 * `int` 型は整数を扱う型です。 -* cin で入力、 cout で出力。 `<<` の矢印の向きを感覚で覚えましょう。 +* `cin`で入力、`cout`で出力。 `<<` の矢印の向きを感覚で覚えましょう。 * `+` `-` `*` `/` `%` で和・差・積・商・剰余 を計算できます。 * あまりにも大きい数字は扱えません。 diff --git a/docs/text/chapter-2/variables.md b/docs/text/chapter-2/variables.md index 0ccd7db..b1bcfae 100644 --- a/docs/text/chapter-2/variables.md +++ b/docs/text/chapter-2/variables.md @@ -11,11 +11,11 @@ int main() { } ``` -`int x = 4` で `x` という名前の **int型の変数** を定義できる。変数を簡単に説明すると、「決められた情報を持つもの」である。 +`int x = 4` で変数を定義し、代入をしている。変数を簡単に説明すると、「決められた情報を持つ入れ物」である。 -* `x` は変数の名前である。アルファベットなら1文字でなくても良い。( `number` 等) -* `int` は「整数」を持つ **int型** であることを意味する。 -* `= 4` は見た通りで、`x` の値を4とする、という意味である。 +* `x` は変数の名前である。一般的にアルファベットで開発者(=あなた)が決める。1文字でなくても良い。(`number` 等) +* `int` はこの変数が「整数」を入れるための、**`int`型**の入れ物であることを意味する。 +* `= 4` は見た通りで、変数の中身(=値)を`4`にするという意味である。 ::: tip `int` は **integer** (=整数) の略。 @@ -41,7 +41,7 @@ int x = 4; x = 3; ``` -本当に値が途中で変わっているか気になる場合は、1行目と2行目の間に `cout` 命令を挟んで x の値を確認してみると良いだろう。 +本当に値が途中で変わっているか気になる場合は、1行目と2行目の間に `cout` 命令を挟んで`x`の値を確認してみると良いだろう。 ```cpp int x = 4; @@ -52,6 +52,10 @@ cout << x << endl; ::: +:::danger +`C++`では、「型」が異なる値と変数について一部の場合を除き、値をそのまま変数に代入することはできない。例えば、`int`型の変数に文字列(=`string`型とよばれている)を入れるような命令はエラーとなる。 +::: + ## 2.2.1. int型 の計算 パソコンは計算機なので、当然計算ができる。 @@ -87,7 +91,7 @@ cout << x % y << endl; である。 `+`, `-`, `*`, `/`, `%` 等のような記号を **演算子** と呼ぶ。 -ここで、**int型同士の割り算について、結果はint型となる**。(文字通り「商」を取る) +ここで、**`int`型同士の割り算について、結果は`int`型となる**。(文字通り「商」を取る) 小数は第3章で扱う。 また、値を代入することもできる。 @@ -114,6 +118,11 @@ cout << f << endl; 計算の中でも特に、`x = x + 4` 等、「加算」したい時は、`x += 4` 等と略記することができる。 +::: tip +代入演算子 `=` は演算子の右辺を計算して、その結果を左辺の変数に**代入**する演算子である。 +例えば `x = x + 4`という命令では `x + 4`が計算され、その結果が`x`に代入される。 +::: + ```cpp:line-numbers int x = 4; x += 7; @@ -138,11 +147,14 @@ cout << yen << endl; と書く。しかし、これを実行すると `937459712` が出力される。 -これは、オーバーフローというものが起きるからである。`int` -型が扱える数値には上限があって(同時に下限もある)、それを超える数を扱う事はできない。扱おうとする時に発生する問題を「オーバーフロー」と呼ぶのである。 +これは、オーバーフローというものが起きるからである。`int`型が扱える数値には上限があって(同時に下限もある)、それを超える数を扱う事はできない。扱おうとする時に発生する問題を「オーバーフロー」と呼ぶのである。 -int 型が扱える数の範囲は `-2,147,483,648` ~ `2,147,483,647` である。基本的に気にすることはないが、起きた時はオーバーフローを疑うと良いだろう。 +`int`型が扱える数の範囲は `-2,147,483,648` ~ `2,147,483,647` である。基本的に気にすることはないが、起きた時はオーバーフローを疑うと良いだろう。 ちなみに、実行すると出力される値は、数値の最上位の桁をコンピューターが無視するために、上限値を超えた際に値が下限値に戻るからである。 -(ゲームで値が 99 を超えたら 0 に戻ったりする所を見たことはないだろうか?最近は見かける事はほぼなくなったが……。) +::: tip +オーバーフローに関連して、ゲーム「パズル&ドラゴンズ」において 2021 年まで各キャラクターが出せる最大ダメージは2,147,483,647ダメージであったという話がある。これはゲームが `int` 型を用いていたためについていた制限である。 +なお、2021年のアップデートでダメージ上限が変更された。これはより大きい整数を扱える型 (C++ で言うところの `long long`型 )に変えられたからだそうだ。 + +:::