外しは原則ご法度の巻2009/06/08Yahoo!知恵袋にはまりつつある自分。回答とか書いてたりして。ハンドルは違うけれど,読む人が読むとすぐ分かると思う。こちらの話なんだけれども,回答しようと思ったら締め切られちゃったので,こっちに書いておきます。Yahoo!知恵袋c言語勉強中です。わかりません教えてください。「ここにあるソースコード」というのはこちら。printf("指定された文字は見つかりませんでした。printf("%cは%d文字目にありました。char*型にキャストしてるんですけど,これはダメだろう。外して返すのは,ポインタの扱いについてポリシーがない証拠です。変更可能な領域なのか,そうでないのか,実装者が決められていないということ。キャストしている理由なんかなくて,ただのつじつま合わせだったりします。いうことで,ベストアンサー。いちいちこんなことをしないとコンパイラが反応するのかが質問者さんは、大きなお世話と思ってるということね。さあ、なんででしょうね。プログラマの不注意による不具合の作りこみを防止するためなんでしょうか。(snip)コンパイラによっては、サイレンとモードみたいなオプションがあるかもしれませんから、警告がうるさければ、お使いのコンパイラのオプションを調べてみれば?せっかくコンパイラが警告を出してくれてるのに......。このプログラム,そもそもちゃんと動かないもんで(一致する文字があっても「見つからない」と言われる),にんともかんともなんですけれど,製作者さんの意図を精一杯汲んで書き直すと,こうなるんだと思う(体裁を少し直してます)。printf("指定された文字は見つかりませんでした。printf("%cは%d文字目にありました。0;}修正したのは次の点。型にキャストこれで動くようになりました。コンパイラの警告も出ません。これくらいの小さなプログラムならまだいいんですけれど,ライブラリを作るとか,クラスのインターフェイスを作るとかいった話になると,他のモジュールと契約関係が生まれてしまいます。外されたら,利用者はたまったもんじゃありません。質問者さんの疑問は,至極まっとうなものだったという話。