C++Primer学習ノート(第五章)

2192 ワード

1、FORサイクル:
(1)C++は、Boolタイプを導入する後、すべての条件文の比較結果を、以前の1と0ではないBoolの文字面値TRUEまたはFALSEに変換する.ブール型を導入するとより柔軟になり、整型が必要な場合、ブール型は自動的に整型に変換され、bool型が必要な場合には変換される.
(2)C++における付与式は価値があり,付与式の値が左側の値であることを規定する.また、付与演算子は右から左に結合されていることに注意してください.
(3)cout bool値が表示されるとBool値がint値に変換される.
(4)式を判定する際にメモリの値を変更すると,式の副作用となる.
(5)すべての式には値があり、すべての文にはセミコロンがあり、文が意味を持たない可能性がある場合でも、式の末尾にセミコロンを付けて文にすることができます.
(6)ルールのfor文を修正した後、for(int i=0;i<9;i+)、int i=0;付与文で、その後ろに続くセミコロンはこの付与文で、forループのセミコロンではありません.forループのフォーマットはfor(for int statement;expression)に変更され、forループには1つのセミコロンしかありませんが、より多くのセミコロンは前の式文によってもたらされます.
(7)C++の自増自減演算子は,変数値を用いない場合には論理的に区別がない.しかし,ユーザ定義のタイプには速度にわずかな差がある.接頭辞は、まず結果+1を返し、接尾辞はまず値のコピーをコピーし、+1を返し、コピーしたコピー値を返します.この場合、変更されていないコピー値が使用されます.接尾辞演算子は、接頭辞演算子よりもレベルが高くなります.
(8)接尾辞演算子は左から右に結合され、接頭辞演算子は右から左に結合される.
(9)あるコードブロック、すなわち括弧で拡大されたコードブロック内で変数を定義すると、この変数の役割ドメインはこのコードブロックの領域にすぎない.ローカル変数は、コードブロック内の外部の同名グローバル変数をブロックします.
(10)ループブロック内部で宣言された変数は,ループがない場合に作成され回収されるため,オーバーヘッドが大きい.
(11)カンマ演算子の機能と特性は以下の通りである.
forループでは,いくつかの式を一つの式として扱う.
変数を初期化して値を割り当てる場合は、リスト区切り記号として使用できます.
カンマで区切られた式は、左から右の順に計算されます.カンマ式の値は右の値です.
カンマ演算子は最も優先度の低い演算子です
(12)関係演算子の優先度が算術の優先度より低い
(13)「da」という文字列定数は実際にはアドレスを表す.
2、whileサイクル
(1)stringオブジェクトは、文字列の末尾を空の文字で表すことはありません.
(2)データ型の別名を作成するにはdefineまたはtypedefを使用します.typedefでは新しいタイプは作成されません.既存のタイプに個別の名前を指定するだけです.また、生命の一連の変数の場合、defineで宣言された別名を使用すると、その隣の変数だけが変更される可能性があります.次の変数はターゲットタイプに指定されません.typedefではこのような状況は発生しません.
#define p int*
p a, b;//このような結果はaをIntポインタタイプに変えるだけで、bはできませんが、typedefを使うとこのようなことはありません.
3、cinについて
cinを利用して文字を読み取る場合、ファイルのリダイレクトを利用してファイルの内容をキーボードとして入力すると、ファイルの末尾のEOFに読み込まれると、cinは2つのオブジェクトのフラグをtrueに設定し、プログラムはファイルの末尾の内容を読み取ることができないが、キーボードシミュレーションEOFであれば、シミュレーションの後もコンテンツを読み込み続けるならcinを利用することができる.clear()というメンバー関数は、文字の入力を継続できるようにEOFタグを明確にします.
また,入力を読み取る際に判断が必要な箇所でcinは変換関数を用いてcinが現れる箇所をbool値に変え,読み出し成功がtrueであればfalseである.また、この変換は単純な意味では0以外の値をTRUEに変換するものではなく、実際の入力結果、例えばEOFを入力した場合、0以外の値であるが、変換関数が認識できるため、現在返されているcinオブジェクトをFALSEに設定する.
cin.get()はint値を返しますcin.get(ch)はcinオブジェクトを返します.
//         EOF  
cin.get(ch);
while(cin.fail() == false)
{
	cin.get(ch);
}