C++ 基礎
首都大学東京 田川研究室
戻る

Introduction

printf関数を用います。以下のコード
#include <stdio.h>

int main()
{
    printf("あ\n");
    return 0;
}
を実行すれば画面に出力されます。Visual StudioならCtr+F5を押せば実行されます。

;
Cでは命令の終わりは;であらわします。改行はスペースと同等に扱われますので注意してください。

printf関数にはどのように表示するかを事細かに指定できます。\nというのは改行命令です。文字列は""で囲みます。
#include <stdio.h>
は標準入出力機能をプログラムに追加するという意味でwindowsに標準で搭載されています。Standard Input Output の略だと思われます。これを書かないとprintf関数が使えません。

main()
CおよびC++は関数を実行すべき最小単位として扱います。main()も関数です。関数はプログラマがいくらでも作ることができるのですが、コンパイラはその中で、main()という名前の関数を探し、その関数をOSに渡して処理を開始する規格になっています。

return 0;  
これは関数の呼び出し元へ制御を返す命令文です。この場合、OSに制御を返します。0を返せば安全に終了できたこと、それ以外なら何かエラーがあったことをOSに渡せたような気がします。しかし、何を渡してもこれといった対処をしてくれるわけでもないので、0を返しておけばよいと思います。それはさておき、
以下、何か計算させてみます。
#include <stdio.h>

int main()
{
    int ia;
    ia = 2;
    ia = ia*2;
    ia = ia*2;

    printf("あーーこんにちはia = %d \nとなりまーす\n" , ia);
    return 0;
}
上記コードからいろいろ察してくれれば幸いです。%dが書かれた文字列をprintfに渡せばそこに整数値を埋め込んでくれます。埋め込むべき値はprintfの第2引数として渡します。
#include <stdio.h>

int main()
{
    int ia;
    double da;
    float fa;
    ia = 3;
    ia = ia*3;
    ia = ia*3;

    da = 3;
    da = da*3;
    da = da*3;

    fa = 3;
    fa = fa*3;
    fa = fa*3;
    printf("あーーこんにちはia = %d \nとなりまーす\n" , ia);
    printf("あーーこんにちはia = %d \nとなりまーす\n" , 8);

    printf("倍精度浮動少数の27 da = %2.20f\n" , da);
    printf("単精度浮動少数の27 fa = %2.20f\n" , fa);
    printf("\n\nまとめて出力 ia = %d\nda = %2.8f\nfa = %2.8f\n\n" , ia , da , fa);
    
    return 0;
}
int ia;
整数型変数を、メモリ上に確保します。iaと書けば、そのメモリへアクセスでき、演算には自動的に整数演算が用いられます。

double da;
倍精度浮動少数型変数をメモリ上に確保します。倍精度演算回路を用いて計算します。有効数字は16桁程度です

float fa;
単精度浮動少数型変数をメモリ上に確保します。単精度演算回路を用いて計算します。有効数字は7桁程度です

%2.8fは浮動少数値を整数部2桁、小数部8桁で表示しろという意味になります。埋め込みたい数値がたくさんある場合は上記のように、第2、第3、第4引数とその数だけ引数を渡せます。

ちなみに%fなど、%系の埋め込み命令を書いた分だけ、後ろの引数を参照します。以下を見てください。
#include <stdio.h>
int main()
{
    int ia;
    double da;
    float fa;
    ia = 3;
    ia = ia*3;
    ia = ia*3;

    da = 3;
    da = da*3;
    da = da*3;

    fa = 3;
    fa = fa*3;
    fa = fa*3;

    printf("\n\nまとめて出力 ia = %d\nda = %2.8f\n\n" , ia , da);
    printf("\n\nまとめて出力 ia = %d\nda = %2.8f\n\n" , ia , da , fa);
    
    return 0;
}
上記コードは埋め込む引数は2つだけですが、2とおり書きました。2つめは必要の無い3つ目の引数を渡しています。普通に動くと思いますが埋め込むのは2つだけなのであっても無くても同じ結果になります。
なお、これは決してやってはいけない構文になります。

埋め込む数より、引数が多いのでまだましですが、逆の場合、たとえば以下
int main()
{
    int ia;
    ia = 3;
    ia = ia*3;
    ia = ia*3;

    printf("%d%d%d\n" , 2 , ia);
    
    return 0;
}
はフリーズの危険が伴います。ご注意を。存在しない変数を参照しようとしますので、なぞの動作を起こします。

まあつまり、printf関数はこのようなバグの温床となるから使うなということなんですが。今は簡単のため使っていますが、じきにC++のstd::coutを使うことを推奨します。