fwe*_*end 3 d exponentiation real-datatype
有人可以解释为什么我在第一种情况下得到肯定的结果而在第二种情况下得到负面结果.
auto r1 = -3.0L;
auto r2 = 2.0L;
writeln(typeid(r1)); // real
writeln(typeid(r2)); // real
writeln(typeid(r1 ^^ r2)); // real
writeln(r1 ^^ r2); // 9
writeln(typeid(-3.0L)); // real
writeln(typeid(2.0L)); // real
writeln(typeid(-3.0L ^^ 2.0L)); // real
writeln(-3.0L ^^ 2.0L); // -9
Run Code Online (Sandbox Code Playgroud)
免责声明:我不知道D.这是用我的背景写的其他语言.
当你对一个负数(实数)求平方时,数字就变为正数.你正在编写模糊的(对人类)表达:
-3^2
Run Code Online (Sandbox Code Playgroud)
这可能意味着:
-(3^2) = -9
要么(-3)^2 = 9
从输出来看,我假设编程语言的运算符优先级是先选择.尝试用以下内容替换最后一行:
writeln((-3.0L) ^^ 2.0L); // -9
Run Code Online (Sandbox Code Playgroud)