倍精度浮動小数点型(double)の引数を渡している間に、パラメータをintとしてとる関数を呼び出すと、C++での暗黙的変換の使用は何ですか?なぜこれはコンパイル時エラーではないのですか?これを可能にするランタイムスタックでは何が起こるのですか?ここで暗黙の変換と関数の呼び出し
#include <iostream>
void foo(int num);
int main() {
double doub= 4.9;
foo(doub);
return 0;
}
void foo(int num){
std::cout<<num<<std::endl;
}
*これはコンパイル時のエラーではないのですか?* 80年代のプログラミング言語は、現在のように型安全ではありませんでした。 C++はC言語と後方互換性があります。 – DeiDei
ランタイムスタック、何もありません。これは実行時には望んでいません。あなたはコードのいくつかの悪い行をキャッチするためにすべてを遅くするだろう。コンパイラの警告レベルを上げてください。変換警告が表示されます。 – user4581301
@ user4581301 int型とdouble型は同じサイズなので、コンパイラは混乱しませんか?このような暗黙的な変換を行うことは、時には役に立ちますか? –