K & R次の文字配列を別の文字配列にコピーするstrcopyというコードスニペットを見ました。Cの構文。文字列のコピー
Tが第1配列へのポインタであり、sはtはにコピーされている配列へのポインタである場合、コードは次のとおり
void strcopy(char *s, char *t){
while(*s++=*t++)
;
}
Iは、whileループによって混乱しています。私は、条件tの中はsにコピーされているとは言いますが、ここでどの条件がテストされているのか分かりません。 *t++
はいつ偽(またはゼロ)ですか?おそらく、文字列が終了したとき。文字列が終了したかどうかは、指されている文字が'\0'
であるかどうかを調べることでテストできます。 K & Rと同じように言います。しかし、この本は、このテストが必要ではないことをむしばんで指摘しています。だからここで何がテストされているのだろうか?
このような古典的なコード。このようなことを書くと、おそらくあなたの同僚が文句を言うでしょう...複数の行にコードを展開すると、簡単に読むのに役立ちます。コンパイラが最適化を行います。 – Stan