- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cではよくてc++ではダメな理由)
cとc++の違い:callocの戻り値のキャストによるコンパイルエラー
このQ&Aのポイント
- cとc++では、callocの戻り値のキャストに関する扱いが異なるため、コンパイルエラーが発生することがあります。
- cでは、callocの戻り値はvoid型のポインタとなっており、int型にキャストしなければなりません。
- 一方、c++では、callocの戻り値はvoid型のポインタとして適切に扱われるため、キャストは必要ありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
x = (int *)calloc(1, sizeof(int)); でいいでしょ。 C言語は暗黙の型変換を割りとやってくれるけど、以降の言語は割りと厳格なので。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
結論を先にいうと「言語仕様がそうなっているから」なんだけど.... エラーメッセージは正確に書いてください. 特に, メッセージを理解もできずに無理に (そして間違って) 訳すくらいなら英文の方がはるかに有用です.
質問者
お礼
すいませんエラーメッセージを今後は記入するようにします。 言語使用がそうなっているんですね。それだけのこととわかりましたありがとうございました。
お礼
CよりC++言語の方が厳格なんですね。 その一言で納得いたしました。ありがとうございました。