错误、漏洞、问题 - 页 1128 1...112111221123112411251126112711281129113011311132113311341135...3184 新评论 Artem Temnikov 2014.04.12 15:29 #11271 在 "正常 "比较中,它被赋予了无符号类型。void OnStart() { ulong i=0; while(true) { if(i<ULONG_MAX) {i++;} //тут в условии так и остаётся тип ulong, преобразования к long не происходит else {break;} } } A100 2014.04.12 15:56 #11272 Fleder:那你怎么解释呢。long t=0; bool comp=(ULONG_MAX-1>t); Print("comp = ",comp); //comp = true 比特比较--不存在矛盾。然后--只有当long<0时,比较ulong和long才是不正确的。 Artem Temnikov 2014.04.12 16:44 #11273 void OnStart() { long n=0; uint g=UINT_MAX; //for(int i=0;i<UINT_MAX;i++) {n++;} //здесь получаем бесконечный цикл и предупреждение expression is always true for(int i=0;i<g;i++) {n++;} //здесь получаем предупреждение sign mismatch и цикл в 4294967295 итераций Print("n = ",n); //n = 4294967295 } 在第一个循环的测试表达式中,int类型的变量与uint类型的整数常数进行比较。没有隐含的类型转换,会进行位数比较。这种表达方式总是真实的。在第二个循环被检查的表达式中,一个int类型的变量与一个uint类型的变量进行比较。将变量i隐式转换为uint类型。而在i变量溢出后:uint(-1)=4294967295的表达式将是假的。 Artem Temnikov 2014.04.12 23:42 #11274 一个时代(UNIX?) 的结束被推迟了8小时。全部类型类型字节大小最低值最大值C++中的模拟日期时间80 (1970.01.01 0:00:00)32 535 244 799(3000.12.31 23:59:59)__时间64_tvoid OnStart() { Print((datetime)32535244799); //3001.01.01 07:59:59 } vlad_123 2014.04.13 05:22 #11275 开发人员。给他一个MQL语法的正式描述,让他去寻找鼻屎:-))) admoon 2014.04.13 06:00 #11276 简单的事情: double min,max; i=Bars-1-period1; while(max-min=0) { min=Low[i]; max=High[i]; i++; } 关于TF。D1和M4的调试器拒绝了min=Low[i]这一行;终端 "挂起"。在其他TF上,这个问题并不存在。用min=iLow();代替没有任何作用。 请告知,"漏洞 "在哪里:在历史中,在新的MT4编辑器中还是在我的头脑中? Vladimir Karputov 2014.04.13 06:05 #11277 admoon:简单的东西。 double min,max; i=Bars-1-period1; while(max-min==0) { min=Low[i]; max=High[i]; i++; }关于TF。D1和M4调试器拒绝min=Low[i];这一行,终端 "挂起"。在其他TF上,这个问题并不存在。替换min=iLow();并没有给我带来任何好处。 请告诉我 "漏洞 "在哪里:在历史中,在新的MT4编辑器中还是在我的头脑中?在创建论坛帖子时,请使用 "SRC "按钮 来插入代码。这将使你的信息更容易阅读。 关于交易、自动交易系统和交易策略测试的论坛 如何在MT5上编译这段代码 barabashkakvn, 2014.04.09 11:09 这里有一篇好文章:从MQL4迁移到MQL5 A100 2014.04.13 09:18 #11278 Fleder:一个时代(UNIX?) 的结束被推迟了8小时。 在帮助中一定有一个错误Print( ulong(::StringToTime( "3000.12.31 23:59:59" ))); //32'535'215'999或者我们不知道什么,我想有人甚至在这里手算过https://www.mql5.com/en/forum/16036。 Artem Temnikov 2014.04.13 09:29 #11279 A100: 显然,在帮助中max=32'535'215'999有一个错误。只是对数据时间类型 的限制没有正确定义。void OnStart() { Print((datetime)32535244799); //3001.01.01 07:59:59 Print((datetime)32535244800); //wrong datetime } A100 2014.04.13 09:34 #11280 Fleder:数据时间类型 的限制根本没有正确定义。 32'535'244'799 != 32'535'215'999 - 哪个是正确的? 1...112111221123112411251126112711281129113011311132113311341135...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在 "正常 "比较中,它被赋予了无符号类型。
那你怎么解释呢。
在第一个循环的测试表达式中,int类型的变量与uint类型的整数常数进行比较。
没有隐含的类型转换,会进行位数比较。这种表达方式总是真实的。
在第二个循环被检查的表达式中,一个int类型的变量与一个uint类型的变量进行比较。
将变量i隐式转换为uint类型。而在i变量溢出后:uint(-1)=4294967295
的表达式将是假的。
一个时代(UNIX?) 的结束被推迟了8小时。
全部类型
类型
字节大小
最低值
最大值
C++中的模拟
日期时间
8
0 (1970.01.01 0:00:00)
32 535 244 799(3000.12.31 23:59:59)
__时间64_t
开发人员。
给他一个MQL语法的正式描述,让他去寻找鼻屎:-)))
简单的事情:
double min,max;
i=Bars-1-period1;
while(max-min=0)
{
min=Low[i];
max=High[i];
i++;
}
关于TF。D1和M4的调试器拒绝了min=Low[i]这一行;终端 "挂起"。在其他TF上,这个问题并不存在。用min=iLow();代替没有任何作用。 请告知,"漏洞 "在哪里:在历史中,在新的MT4编辑器中还是在我的头脑中?
简单的东西。
关于TF。D1和M4调试器拒绝min=Low[i];这一行,终端 "挂起"。在其他TF上,这个问题并不存在。替换min=iLow();并没有给我带来任何好处。 请告诉我 "漏洞 "在哪里:在历史中,在新的MT4编辑器中还是在我的头脑中?
在创建论坛帖子时,请使用 "SRC "按钮 来插入代码。
这将使你的信息更容易阅读。
关于交易、自动交易系统和交易策略测试的论坛
如何在MT5上编译这段代码
barabashkakvn, 2014.04.09 11:09
这里有一篇好文章:从MQL4迁移到MQL5
一个时代(UNIX?) 的结束被推迟了8小时。
或者我们不知道什么,我想有人甚至在这里手算过https://www.mql5.com/en/forum/16036。
显然,在帮助中max=32'535'215'999有一个错误。
只是对数据时间类型 的限制没有正确定义。
数据时间类型 的限制根本没有正确定义。