我想知道什么时候应该投出更好.在添加,乘法等时,C++中的隐式类型转换规则是什么.例如,
int + float = ?
int * float = ?
float * int = ?
int / float = ?
float / int = ?
int / int = ?
int ^ float = ?
Run Code Online (Sandbox Code Playgroud)
等等...
表达式是否总是被评估为更精确的类型?Java的规则有所不同吗?如果我不准确地说出这个问题,请纠正我.
是否存在一个浮点数据类型(例如double)确保所有+, - ,*,/,%等数学运算都假定为双操作数?
如果故事比这更复杂,是否有描述这些规则的资源?我不应该问这样的问题,总是明确地转换int到double当公式的结果double.这是我正在考虑的一些方程式.我故意不在我的系统上编译和运行,因为这是可能依赖于编译器的类型.
int a(1), b(2), c(3);
double d(4.);
double result1 = a + b/d + c; // equal to 4 or to 4.5?
double result2 = (a + b)/d + c; // equal to 3 or to 3.75?
double result3 = a/b + d; // equal to 4 or to 4.5?
Run Code Online (Sandbox Code Playgroud)