Skip to content

Commit

Permalink
[fix] 変数とコメントについての情報追加 (#18)
Browse files Browse the repository at this point in the history
* [fix] 変数とコメントについての情報追加

自分の経験上,わかりにくかった部分を補足.

* [fix] ちょっとした表記ブレの解消

* [hotfix] 実は,整数型と浮動小数点数型は暗黙的キャスト可能なんです

反省してます.

* [fix] 「文字」を「文字列」に

* [fix] 「変数」の説明を提案

* [fix] 代入演算子

Co-authored-by: Take <[email protected]>

* []

Co-authored-by: Take <[email protected]>

* [fix] パズドラ

* [fix] 変数の説明の表現を修正

---------

Co-authored-by: Take <[email protected]>
Co-authored-by: comavius <[email protected]>
  • Loading branch information
3 people authored May 2, 2024
1 parent 678ae36 commit 83eb43d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 14 deletions.
6 changes: 3 additions & 3 deletions docs/text/chapter-2/hello-world.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ int main() {
```

コンソールに `Hello traP!` を出力する。
`"` で囲うのは、これが文字列なのか、命令なのかを区別するため。(VSCode を使っていれば `"Hello traP!"`
`"` で囲うのは、これが文字列なのか、命令なのかを区別するため。(`VSCode`を使っていれば `"Hello traP!"`
の部分だけ色分けされているはず。) `endl` についても 2.1.1. で解説する。

```cpp:no-line-numbers
Expand Down Expand Up @@ -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 関数
Expand Down
2 changes: 1 addition & 1 deletion docs/text/chapter-2/input.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ int main() {

* 上記のコードで「10」を入力したときに出力される値は?出力を予想したら、実行してみましょう。
* `int` 型は整数を扱う型です。
* cin で入力、 cout で出力。 `<<` の矢印の向きを感覚で覚えましょう。
* `cin`で入力、`cout`で出力。 `<<` の矢印の向きを感覚で覚えましょう。
* `+` `-` `*` `/` `%` で和・差・積・商・剰余 を計算できます。
* あまりにも大きい数字は扱えません。

Expand Down
32 changes: 22 additions & 10 deletions docs/text/chapter-2/variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -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** (=整数) の略。
Expand All @@ -41,7 +41,7 @@ int x = 4;
x = 3;
```

本当に値が途中で変わっているか気になる場合は、1行目と2行目の間に `cout` 命令を挟んで x の値を確認してみると良いだろう。
本当に値が途中で変わっているか気になる場合は、1行目と2行目の間に `cout` 命令を挟んで`x`の値を確認してみると良いだろう。

```cpp
int x = 4;
Expand All @@ -52,6 +52,10 @@ cout << x << endl;

:::

:::danger
`C++`では、「型」が異なる値と変数について一部の場合を除き、値をそのまま変数に代入することはできない。例えば、`int`型の変数に文字列(=`string`型とよばれている)を入れるような命令はエラーとなる。
:::

## 2.2.1. int型 の計算

パソコンは計算機なので、当然計算ができる。
Expand Down Expand Up @@ -87,7 +91,7 @@ cout << x % y << endl;

である。 `+`, `-`, `*`, `/`, `%` 等のような記号を **演算子** と呼ぶ。

ここで、**int型同士の割り算について、結果はint型となる**。(文字通り「商」を取る)
ここで、**`int`型同士の割り算について、結果は`int`型となる**。(文字通り「商」を取る)
小数は第3章で扱う。

また、値を代入することもできる。
Expand All @@ -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;
Expand All @@ -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`型 )に変えられたからだそうだ。

:::

0 comments on commit 83eb43d

Please sign in to comment.