次のコード行を見ました。
fputc("01234"[(int)tmp_seq[j][i]], opt->fp_bfast);
fputc
今まで、文字を取得して出力ストリームに入れると思っていました。このコード行は何をしますか
このコードは、文字列"01234"
を文字配列として扱うことによって文字を選択するために文字列にインデックスを付けています。インデックスは(int)tmp_seq[j][i]
です。
おそらく~ の間の(int)tmp_seq[j][i]
値を保持します。それ以外の場合は、範囲外の配列インデックス付けエラーが発生します。0
4
"01234"[(int)tmp_seq[j][i]]
書くのはかなり恐ろしく、非効率的な方法'0'+tmp_seq[i][j]
です...