WindowsなどのGUIシステムや組み込み機器のプログラムなどはこの限りではありません。
実は、endlはそれだけの意味ではありません。改行して出力バッファをフラッシュすると言う意味があります。純粋に改行だけを表すのには、'¥n'を用います。つまり、endlには、'¥n' + flushという意味があるのです。フラッシュについては、coutではほとんど気にしなくてもいいのですが、出力先がファイルなどではその点について注意を払う必要があります。また、endlはフラッシュする分だけ遅くなるので、気を付けましょう。
以下の表に演算子の種類と優先順位について示します。これらは上から順に優先順位が高く、下に行くにつれ低くなります。同じ色に分けられた演算子は同じ優先順位です。また、ここで示す左辺値とは、非定数オブジェクトのことです。
| 演算子 | 意味 | 使い方 |
|---|---|---|
| :: | スコープ解決 | クラス::メンバ |
| :: | スコープ解決 | 名前空間::メンバ |
| :: | 大域的 | ::名前 |
| :: | 大域的 | ::制限付きの名前 |
| . | メンバの選択 | オブジェクト.メンバ |
| -> | メンバの選択 | ポインタ->メンバ |
| [] | 添字付け | ポインタ[式] |
| () | 関数呼び出し | 式(式のリスト) |
| () | 式の構築 | 型(式のリスト) |
| ++ | 後置インクリメント | 左辺値++ |
| -- | 後置デクリメント | 左辺値-- |
| typeid | 型識別 | typeid(型) |
| typeid | 実行時型識別 | typeid(式) |
| dynamic_cast | 実行時チェック付き変換 | dynamic_cast<型>(式) |
| static_cast | コンパイル時チェック付き変換 | static_cast<型>(式) |
| reinterpret_cast | チェックなし変換 | reinterpret_cast<型>(式) |
| const_cast | const変換 | const_cast<型>(式) |
| sizeof | オブジェクトのサイズ | sizeof 式 |
| sizeof | 型のサイズ | sizeof(型) |
| ++ | 前置インクリメント | ++左辺値 |
| -- | 前置デクリメント | --左辺値 |
| ‾ | 補数 | ‾式 |
| ! | 否定 | !式 |
| - | 単項のマイナス | -式 |
| + | 単項のプラス | +式 |
| & | アドレス取得 | &左辺値 |
| * | 間接参照 | *式 |
| new | 構築(領域確保) | new 型 |
| new | 構築(領域確保と初期設定) | new 型 (式のリスト) |
| new | 構築(配置) | new (式のリスト) 型 |
| new | 構築(配置と初期設定) | new (式のリスト) 型 (式のリスト) |
| delete | 解体(領域開放) | delete ポインタ |
| delete [] | 配列の解体 | delete [] ポインタ |
| () | キャスト(型変換) | (型)式 |
| .* | メンバ選択 | オブジェクト.*メンバへのポインタ |
| ->* | メンバ選択 | ポインタ->*メンバへのポインタ |
| * | 乗算 | 式*式 |
| / | 除算 | 式/式 |
| % | 剰余 | 式%式 |
| + | 加算 | 式+式 |
| - | 減算 | 式-式 |
| << | 左にシフト | 式<<式 |
| >> | 右にシフト | 式>>式 |
| < | 未満 | 式<式 |
| <= | 以下 | 式<=式 |
| > | より大きい | 式>式 |
| >= | 以上 | 式>=式 |
| == | 等しい | 式==式 |
| != | 等しくない | 式!=式 |
| & | ビットごとの論理積 | 式&式 |
| ^ | ビットごとの排他的論理和 | 式^式 |
| | | ビットごとの内包的論理和 | 式|式 |
| && | 論理積 | 式&&式 |
| || | 論理和 | 式||式 |
| ? : | 条件式(三項演算子) | 式?式:式 |
| = | 単純な代入 | 左辺値=式 |
| *= | 乗算して代入 | 左辺値*=式 |
| /= | 除算して代入 | 左辺値/=式 |
| %= | 剰余を取って代入 | 左辺値%=式 |
| += | 加算して代入 | 左辺値+=式 |
| -= | 減算して代入 | 左辺値-=式 |
| <<= | 左にシフトして代入 | 左辺値<<=式 |
| >>= | 右にシフトして代入 | 左辺値>>=式 |
| &= | 論理積を取って代入 | 左辺値&=式 |
| |= | 論理和を取って代入 | 左辺値|=式 |
| ^= | 排他的論理和を取って代入 | 左辺値^=式 |
| throw | 例外を送出 | throw 式 |
| , | コンマ(連続) | 式,式 |
Visual C++では、デフォルトの設定でコンパイルすると関数の最後まで有効になってしまいます。これはMicrosoftの言語拡張を無効にすることで対処できます。Zaオプションを指定して、コンパイルしてください。ただし、Microsoftが用意したライブラリの中には、このオプションを付けることで使用できなくなるものがあります。#include<iostream>などもこれにあたるので、実質全然使えないということになりますね(-_-#。
環境によってはそのままエラーが出ずに正常に終了することもあります。それは、読み書きできる領域に文字列を格納する環境だからです。例えばVisual C++では、デフォルトではエラーは出ませんが、GFオプションをつけることでエラーとなります。