ロベールのC++入門講座(0)
- 作者: ロベール
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2007/11/15
- メディア: 単行本(ソフトカバー)
- 購入: 26人 クリック: 25,357回
- この商品を含むブログ (127件) を見る
flush(p39)
標準出力の最後には必ずflushもしくはendlを付ける。
cout << "Hello, World" << flush
Makefile(p53)
makeコマンド用ファイル(Makefile)
Hello: Hello.cpp g++ -o Hello Hello.cpp Foo: Foo.cpp Bar.h g++ -o Foo Fpp.cpp
指定無しだと一番上のタスクが実行される。
$ make g++ -o Hello Hello.cpp $ make Foo g++ -o Foo Fpp.cpp
void(p67)
Cの場合、引数なしでもint hoge(void)と書くのが無難。
(付録C)
関数定義ではint hoge()でもint hoge(void)とみなされるが、関数宣言では引数情報が不明と判断され、可変個引数に似たような扱いになってしまう。
安全の為にvoidを書こう。
for文での変数宣言(p90)
Cではforの初期化部分で変数宣言はできない。
#include <stdio.h> int main(void) { for (int i = 0; i < 5; i++) { printf("%d\n", i); } }
$ gcc Test.c
Test.c: In function ‘main’:
Test.c:4: error: ‘for’ loop initial declaration used outside C99 mode
でもエラー文にある通り、C99では可能。
$ gcc -std=c99 Test.c $ ./a.out 0 1 2 3 4
参照(p110)
- Cには無いよ。あるのはアドレスを取り出す単項演算子&
- 参照に代入できるのは変数のみ。
int& r = 3; //コンパイルエラー
- 参照先の変更は不可
ってできるよ?(後で調べる)
int n[10]; n[1] = 5; n[3] = 10; int& r = n[3]; printf("%d\n", r); r = n[1]; printf("%d\n", r);
char(p115)
'a'はC++ではchar、Cではint。
ヌル文字(p118)
文字コード0の文字=ヌル文字=文字列終端=ヌルターミネータ='\0'
文字列走査イディオム(p122)
for (int i = 0; str[i] != '\0'; i++)
sprintf(p123)
印字しないのに何故に関数名がprint?(後で調べる)
乱数(p138)
srandで乱数種を設定し、randで求める。
true=1、false=0(p152)
true=1、false=0なので以下のようにしてnの符号が求められる。
//正:sign=1 負:sign=-1 0:sign=0 int sign = (n > 0) - (n < 0);
C99での論理値(p153)
C99では論理値が使える。
#include <stdio.h> #include <stdbool.h> int main(void) { bool a = true; if (a) { printf("true\n"); } else { printf("false\n"); } }
$ gcc -std=c99 Test.c $ ./a.out true $ gcc Test.c $ ./a.out true
C99モードでなくても使える?(後で調べる)