大学を合格してから始めるwindowsでプログラミング 3日目

どうもこんにちは、線形代数の勉強も始めたしゃーまんです。

今日からバリバリ、やったところを書いていきたいと思います。

昨日の記事はこちらです。

[大学を合格してから始めるwindowsでプログラミング 2日目](https://qiita.com/oinori_man/items/b9c4df3530cca091721d)

# C言語 ~変数~

プログラミングの中では、**変数**という概念があります。

これは数字などを一時的に保存しておく箱のようなものらしい。

この変数というものにも種類があって、それぞれ入れられる数字などの大きさや、種類が違う。代表的な奴としてはこのようなもの

- int
- short
- long
- float
- double
- char
- unsigned int

これ以外にもunsigned char BYTE UCHARなどもあるみたい。

この種類は、大まかに3つに分けられます。

- 整数を扱うことができるもの
- 少数などを扱えるもの
- 文字を扱えるもの

こんな感じで分けられる。上で言うとint, short, long, unsigned intが整数。float, doubleが少数、文字を扱えるのがchar。

変数の大きさ（？）も色々あるっぽい。

intのほうがshortよりも使える数字の大きさが大きい、また、longはintよりももっと大きい数を使える。

リストにしてみた。

| 変数の型 | 扱える数字 | 最小 | 最大 |
|:-:|:-:|:-:|:-:|
| int | 整数 | -2,147,483,648 | 2,147,483,648 |
| short | 整数 | -32768 | 32768 |
| long | 整数 | -2,147,483,648 | 2,147,483,648 |
| float | 少数 | -3.402823e+38 | 3.402823e+38 |
| double | 少数 | -1.797693e+308 | 1.797693e+308 |
| char | 文字 | -128 | 128  |


e+nは $10^n$ のことみたい。そう考えるとdoubleの扱える数字が半端ない。

# 文字の表示

昨日書いたコードでは、ただ単に `Hello World`と出力するだけだった。

これ以外にも、文字を変えれば出力できる文字は変えられるけど、それ以外にも、変数の内容も表示できるらしい。

### 変数を表示してみる

上のセクションで、変数のことについて書いたので、実際に変数を出力してみた。

文字の出力は `printf();`でできたので、またこれを使っていけば出力できるらしい。

書いたコードはこんな感じ。

``` printvalue.c
#include <stdio.h>

// ちなみに、バックスラッシュ(/)を二つ続けて書くとコメントとなって、
// 人間は読むことができるけど、コンパイラはこの文字を無視するらしい
// こういう時に、どういうプログラムかと説明するときとかに便利そう。

int main(){
    int a; // これで int の型の変数の a というものを作ることができるらしい

    a = 10;

    printf("aの変数の数字は %d です。\n", a);

    return 0;
}
```

これで変数のaが出力されるらしい。

![printval.jpg](https://qiita-image-store.s3.amazonaws.com/0/242495/7ea82659-f348-f092-c077-1935f138d948.jpeg)

実際にやってみたら出力された。

とりあえず、やってみたけど出力される文字の中で `%d` ってなるのが意味わからなかったので調べてみた。

#### 変換指定文字列？

調べてみると、%dというものは変換指定文字列の一つらしい。どうも、文字の中でそれがあると、良しなに数字などに変換される文字。

今回は

```
aの変数の数字は %d です。
```

というところの%dの部分が、変数のaの数字に変更されて出力されるみたい。

これも変数の型で % の後ろに来る文字が違う。

- intなどの整数の時 ... %d
- doubleなどの少数の時 ... %f, %lf, %e
- charなどの文字の時 ... %s

などがある。けど、 ○○の確率は△△% みたいにprintfの中で `%` を表示したいときは
```
○○の確率は△△%%
```

のように、%を二つつなげてあげる。

![30per.jpg](https://qiita-image-store.s3.amazonaws.com/0/242495/e37af575-251b-a7da-b012-f78c840ecb75.jpeg)

出てくれる。

少数を表示してみた。

![error]()


# 数字の計算
プログラミングで何をするかといわれて、一番最初に考えたのが、計算だった。計算は人間がよくやる形でできるみたい。

けど、数学とはちょっと勝手が違くて、左辺に答えが出てくる感じになる。
```
変数 = 計算式
```

みたいな感じ。

yという変数に、2+3を計算した結果を入れたいときは。

```
y = 2 + 3;
```

でyに５という数字が入ってくる。

ほかにも、計算の演算子は　`+`, `-`, `*`, `/`が使用できる。プラスマイナスはそのまんまの意味だけど、 `*` は掛け算、`/`は割り算として定義されている。

ほかにも mod(割り算のあまり) が`%`で定義されている。

数字同士で計算もできるけど、変数同士も計算できるみたい。

![opera.jpg](https://qiita-image-store.s3.amazonaws.com/0/242495/9de429e8-63ae-9981-22be-78fd53955371.jpeg)
　
### 変数同士の計算について

変数同士の計算について、面白いことが分かった。

今ある変数に数字を足したいときは。

```
a = a + 1;
```
でaという変数に +1 できる。

数学で言えば

```
x = x + 1
```

になる、数学的にはちょっと変な感じがするけど、プログラミングではきちんと動いてくれる。

これ以外にも、`インクリメント`や`デクリメント`という、その数字を直接カウントアップ、カウントダウンしてくれる。

インクリメントは
```
a++;
```

で動く、これはうえで書いた`a = a + 1`と同じになる。

![opera2.jpg](https://qiita-image-store.s3.amazonaws.com/0/242495/19b2e34a-f605-8845-edf8-b4286b234ead.jpeg)

デクリメントは+を-に変更してくれればいい感じ～。

![opera3.jpg](https://qiita-image-store.s3.amazonaws.com/0/242495/24c49dad-24f0-70af-0c1c-1a7e265e5bc7.jpeg)

実際のところ、for文while文のところまでは色々やってみたんですが、明日が早いので、準備のためにもここで筆をおこうと思います。

土日は色々と予定があるので、お休みさせてください。

３日目の記事は変数と、printのところで終わり終わり。