• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cではよくてc++ではダメな理由)

cとc++の違い:callocの戻り値のキャストによるコンパイルエラー

このQ&Aのポイント
  • cとc++では、callocの戻り値のキャストに関する扱いが異なるため、コンパイルエラーが発生することがあります。
  • cでは、callocの戻り値はvoid型のポインタとなっており、int型にキャストしなければなりません。
  • 一方、c++では、callocの戻り値はvoid型のポインタとして適切に扱われるため、キャストは必要ありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

x = (int *)calloc(1, sizeof(int)); でいいでしょ。 C言語は暗黙の型変換を割りとやってくれるけど、以降の言語は割りと厳格なので。

tranceporter
質問者

お礼

CよりC++言語の方が厳格なんですね。 その一言で納得いたしました。ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

結論を先にいうと「言語仕様がそうなっているから」なんだけど.... エラーメッセージは正確に書いてください. 特に, メッセージを理解もできずに無理に (そして間違って) 訳すくらいなら英文の方がはるかに有用です.

tranceporter
質問者

お礼

すいませんエラーメッセージを今後は記入するようにします。 言語使用がそうなっているんですね。それだけのこととわかりましたありがとうございました。

関連するQ&A