(作成:2005/10)
hoge, fuga, piyo...
それにしても、 hoge
なるキータッチを考え着いた人はスゴいと思ふ。何て打ち易いんだ hoge
。
変数ii、jj...
人様のプログラム見てると、たまーにこういう訳解らん変数名が出て来るときがある。
これはどうやら、FORTRANからの慣習のよう。
FORTRANでは、変数がi~mの範囲だと整数型変数として宣言なしで使用できるらしい。そういう意味で楽なのは for
文のカウント用関数等の一時的な使用だわね。まぁその場合だと i
とか j
とか一文字で良いわけだけれど。
for(int i = 0;i < 10;i++) {
for(int j = 0;j < 20;j++) {
System.out.println("ほげ");
}
}
そうでなくて一時的な関数として使用したいなーと思った時に、後々エディタで楽に変換できるようにと、連続した文字列、 ii
とか jj
とかが使われるようになった、らしい。所謂 tmp
だの temp
だのと似たような変数名、という訳だ。
int ii = 0;
for(int i = 0;i < 10;i++) {
// 何がしかややこしい処理
ii = i * hogehoge;
// 何がしかややこしい処理
}
しかしぶっちゃけ今こういう使い方すんのは時代錯誤も甚だしいね。 for
文の i
だの j
はまだ許せるけれど、 ii
だの jj
だのはソースの可読性を低下させるだけの害悪に他ならないと思う。特にコメントも無いソースなんかだともう泣くしか。
変数名は解りやすいものにしようね。うん。
色んな標準入出力
テキスト出力なんかにはちょっと便利。
C | C++ | Java | Fortran | リダイレクト | |
---|---|---|---|---|---|
標準入力 | stdin |
cin |
System.in |
5 | command < file |
標準出力 | stdout |
cout |
System.out |
6 | command > file |
標準エラー | stderr |
cerr / clog |
System.err |
(大抵) 0 | command 2> file |
C言語の配列
配列は普通 a[1]
のように書くけど、 1[a]
でも同じ意味で表現できるらしい。
#include<stdio.h>
int main(int argc, char *argv[]) {
char a[4] = {'h', 'o', 'g', 'e'};
printf("%c%c%c%c\n", a[0], a[1], a[2], a[3]);
printf("%c%c%c%c\n", 0[a], 1[a], 2[a], 3[a]);
exit(0);
}
わーお。コンパイルも通るし出力も同じ。
これは、例えば配列 a[1]
を内部表現として *(a+1)
みたくポインタ表現しており、これは *(1+a)
のように足し算の順序を入れ替えても成立する、つまり 1[a]
と書ける、ということらしい。
まぁ、ぶっちゃけ特に意味はないけれども。
旧ライブラリとの共存法
ライブラリを導入した場合、ディレクトリさえ違えば以下の環境変数を登録するだけで
ライブラリを使い分けることができる。
例: bash
の場合で、 /usr/local/lib
内のものを優先して使う
#### ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib