结论是,我搞错了,应该进行强制类型转换。
不过在测试过程中发现了新问题。
只要10行简单代码就能让 MetaEditor (5.0.0.244) 在编译时崩溃。
void TestMath6() //long lParam { long lLocal=555; long l_l_2; l_l_2 = (long)lLocal; //+lParam (long) } int OnInit() { return(0); }https://www.mql5.com/en/forum/474
这个问题在MQL4里没有,因为MQL4根本就不支持这样的强制类型转换,MetaEditor (4.0.0.225) 会直接报告编译错误。
从版本号上也能看出来,MQL5比MQL4复杂多了。
MQL5的奇怪问题,欢迎不明真相的群众围观
https://www.mql5.com/en/forum/465/
一个整数可能与数值相同的另一个整数导致不同结果。这可不是浮点精度问题。
你可能必须保证自己在所有必要的地方进行强制类型转换,否则结果无法预料。