【くそ!】 買っては ..
849:デフォルトの名無しさん
08/08/06 16:38:10
>>844
正誤表しか見ていないからどういう文脈で使われているのか分からないが、
> for (i=0; i<strlen(t); i++ )
> s[i] = t[i];
strlenの呼び場所からしてなんだかなあという印象が。
悪い例として書いてあるのならいいんだが。
850:デフォルトの名無しさん
08/08/06 16:49:30
いまどきそのくらいはオプティマイザが何とかしてくれるよ。
けど、そのへんちゃんと解説するべきではあると思う。
期待は出来なさそうだが。
851:デフォルトの名無しさん
08/08/06 17:01:02
>>849
strcat/strcpyを使えなら分かるけど、
strlenの位置が悪いってのは、良く分からん。
852:デフォルトの名無しさん
08/08/06 17:01:40
>>851
ループ毎に評価されるからでしょ
853:デフォルトの名無しさん
08/08/06 17:13:39
>>852
ループ外へ掃き出しをしないコンパイラを考慮しないとダメって事?
854:デフォルトの名無しさん
08/08/06 17:30:54
当然です
855:デフォルトの名無しさん
08/08/06 17:35:54
厳しいね。
確かに技術書なら、そこまで配慮するべきか。
856:デフォルトの名無しさん
08/08/06 18:05:12
>>850
strlenは普通インライン関数じゃないから、コンパイラからは宣言しか見えなくて中で何を処理してるかわからない思うけど、
それでも今時のコンパイラでは最適化でループの外に出してくれたりするもんなの?
これがもしstrlenじゃなくてrandだったら、ちゃんとループの外に出さずにそのままにしてくれるの?
857:デフォルトの名無しさん
08/08/06 20:16:24
そのための(const char *)だ
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5389日前に更新/189 KB
担当:undef