当我调用一个将参数作为int的函数时,C ++中隐式转换的用途是什么,而我传递的参数是double?为什么这不是编译时错误?在运行时堆栈中发生了什么允许这种情况发生?
#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;
}
答案 0 :(得分:2)
这是C ++所做的所有implicit conversions的长列表。这个特别的内容包括在:
浮动积分转换浮点类型的prvalue可以转换为任何整数类型的prvalue。小数部分是 截断,即丢弃小数部分。如果值 无法适应目标类型,行为未定义(甚至 当目标类型是无符号时,模运算不会 应用)。如果目标类型是bool,则这是布尔转换 (见下文)。