- 【初心者歓迎】C/C++室 Ver.103【環境依存OK】
685 :はちみつ餃子 ◆8X2XSCHEME [sage]:2018/11/09(金) 11:35:02.44 ID:yH/J6wNO - >>681
書いている意味はさっぱりわからんが、文字列リテラルの型は const char[] だ。 そんでもって >>679 の場合の文字列リテラルは暗黙の型変換で const char* になる。 const char* を char* に入れようとしたら型が合わないがキャストで無理やり合わせることも出来るという簡単な話。 だが、型から const を剥がしたからといって文字列リテラルを書き換えてよくなるわけではない。 (← 重要!) const を剥がすだけなら問題はないが、 書き換えたら駄目 (未定義) にもかかわらず型から const を外すのは馬鹿馬鹿しい間違いの元。 よくわからんままキャストしたら警告が消えた〜〜っていうのはC/C++ の歴史で何十年も繰返してるので 古参ならうんざりするほど見てきた駄目なパターンだと思う。 とりあえずキャストってのはほんとにやめて……。 (ちなみに C では文字列リテラルの型は char[] だが、書き換えるのは未定義ってことになってるという更なる闇がある)
|