「質問と回答」の編集履歴(バックアップ)一覧に戻る
質問と回答 - (2009/05/31 (日) 21:37:16) の編集履歴(バックアップ)
テキストには例がない。普通にcプログラムを書いているとわりとよく遭遇する。
int main()
{
int a=0;
/* ②if文いらねーや。
if(a==0) /* ①ここに説明を書いた。 &u(){*/} 実際はここでコメントが終了。
{
}
②ここまでのつもり */
}
if, while, forの第二項は式の真偽値を評価する。
真偽値というのは、その式があっている(true)か間違っている(false)かということ。
式が論理式じゃない場合は、値が「0」の場合はfalse、「非0」の場合はtrue
同じ名前は同じものと判断されるので、ライブラリを使うなど、異なるプログラム間で名前が衝突するとコンパイルとかリンクができなくなる。
c++ではnamespaceを作ることでライブラリの互換性を高めている。
ほかの言語ではmoduleとか呼ばれる時もある。
stdは標準名前空間で、たいていのc++を謳う環境にはくっついている。
たいていの環境で使える関数とかクラス群が定義されている。
(それでも微妙な互換性の問題があったりするらしいけど。
よく使うというか、
高速化したいなら気合い入れて使わないと大して早くならない。
性能はけっこう環境依存なので、
高速化をやろうとしたら、実行されるコードに対していろんな種類のcpuごとにクロック数をにらみながらインラインを切り替えたりループを書き換えたり...みたいな作業がいるっぽい。
しかしそれよりもむしろアルゴリズムを改善したほうが速かったりする。
構造体がデータを並べて保持するのに対して
共用体はデータを重複させて保持する。
メモリの少ない環境とか、大量のメモリを消費するプログラムに使われたりする。
いわゆる、ゆとりには扱えない代物だが、メンテナンス性は微妙。
中身はintとかの形で保持されるが、値のとれる範囲を制限するのに結構有効。
#define EULAR 1
int a=EULAR;
if(a==EULAR)
とかよりも
enum demethod{EULAR, HEUN, RUNGEKUTTA};
demethod a=EULAR;
if(a==EULAR)
とかのほうが間違ってたらコンパイルエラー出るし結構お得。
Bresenhamのアルゴリズムとか?
コンソールでもできるだろうけどなんかいろいろめんどくさいぜ。
確かに不明。
コンパイル時に引数の型がチェックされ、内部というかオブジェクトファイルではそれぞれ別の名前としてコードが生成されるので、
実際には重複していないはず。