5章 演算のはなし

http://www.geocities.jp/ky_webid/c/005.html

変数と変数での計算方法。演算子の話等。

int main() {
    int num   = 100;
    char c    = 'A';
    float f   = 0.1f;
    double pi = 3.14;
}

float型に整数定数を代入する場合はfをつける。fをつけることで明示的にfloat型だと指定。

char型には単一の文字を代入できる。文字定数を代入する場合はシングルクォートでくくる。

ダブルクォートだと「文字」ではなく「文字列」と認識されるので誤りらしい。ややこしいな。

問題1

次のプログラムを実行すると、画面に何と表示されるか答えてください。

#include <stdio.h>
int main(){
    int num = 100;
    int ans;

    ans = num;
    ans = num * 2;
    num = ans / 2;
    printf( "答えは%d\n", ans );  /* ここで何と表示されるでしょう? */
    return 0;
}

見たまんま。ansにnum代入で100に→numかける2代入で200に上書き→ans割る2してるけどansに代入してないのでそのまま

よって200。

問題2

次のプログラムを実行すると、画面に何と表示されるか答えてください。

#include <stdio.h>
int main(){
    int num = 4;
    int ans;
 
    ans = ( (10 * num) - (num * 2) ) / num;
    printf( "答えは%d\n", ans );  /* ここで何と表示されるでしょう? */
    return 0;
}

括弧で優先順位つけてるけど数学と同じで掛け算の方が足し算よりも優先されるので実質括弧必要ないように思える。

「(40 - 8) / 4」で答えは8。

問題3

char型の変数に適当な文字を代入した後、その変数をprintf関数(%dを使う)を使って表示させてみて下さい。どんな結果になるでしょう。

やってみる。

int main () {
    char c = '0';

    printf("%d",c);
    return 0;
}
$ main
48

48と表示された。

これは文字コードというものらしい。文字を表現する際にコンピュータが認識できるよう表された数値のこと。

ASCII文字コード - IT用語辞典

こちらにその文字コードの表がある。

確かに「0」という文字列は「48」という数値で表されているようだ。