- 1 名前:デフォルトの名無しさん [2005/06/17(金) 03:01:35 ]
- VisualC○+逆引き500。
- 849 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 16:38:10 ]
- >>844
正誤表しか見ていないからどういう文脈で使われているのか分からないが、 > for (i=0; i<strlen(t); i++ ) > s[i] = t[i]; strlenの呼び場所からしてなんだかなあという印象が。 悪い例として書いてあるのならいいんだが。
- 850 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 16:49:30 ]
- いまどきそのくらいはオプティマイザが何とかしてくれるよ。
けど、そのへんちゃんと解説するべきではあると思う。 期待は出来なさそうだが。
- 851 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:01:02 ]
- >>849
strcat/strcpyを使えなら分かるけど、 strlenの位置が悪いってのは、良く分からん。
- 852 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:01:40 ]
- >>851
ループ毎に評価されるからでしょ
- 853 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:13:39 ]
- >>852
ループ外へ掃き出しをしないコンパイラを考慮しないとダメって事?
- 854 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:30:54 ]
- 当然です
- 855 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:35:54 ]
- 厳しいね。
確かに技術書なら、そこまで配慮するべきか。
- 856 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 18:05:12 ]
- >>850
strlenは普通インライン関数じゃないから、コンパイラからは宣言しか見えなくて中で何を処理してるかわからない思うけど、 それでも今時のコンパイラでは最適化でループの外に出してくれたりするもんなの? これがもしstrlenじゃなくてrandだったら、ちゃんとループの外に出さずにそのままにしてくれるの?
- 857 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:16:24 ]
- そのための(const char *)だ
|

|