mql5语言的特点、微妙之处以及技巧 - 页 160 1...153154155156157158159160161162163164165166167...247 新评论 fxsaber 2020.01.26 14:54 #1591 Alexey Viktorov: NULL是这样一个模糊的概念,你必须小心地处理它。 void OnStart() { uchar Bytes[]; Print(StringToCharArray(NULL, Bytes)); // 0 Print(StringToCharArray("", Bytes)); // 1 } 再一次,输入的字符串不能是NULL(由 "").其他字符串可以。 Maxim Kuznetsov 2020.01.26 15:05 #1592 fxsaber: 再一次,输入的字符串不能是NULL(由 "").其他字符串可以。 输入几乎与const同义,const必须被初始化 Alexey Viktorov 2020.01.26 15:06 #1593 fxsaber: 再一次,输入的字符串不能是NULL(由 "").其他字符串可以。 再说一遍,为什么你认为不应该有这种转换?我的知识和经验不足以解释这一切。所以要坚持自己的观点。我希望开发商不要顺势而为,改变它。 fxsaber 2020.01.26 15:07 #1594 Alexey Viktorov: 再说一遍,为什么你认为不应该有这种转换? 我很清楚为什么会发生这种转换。我们在这里谈论的是一个功能,而不是一个错误。 fxsaber 2020.01.26 15:08 #1595 Maxim Kuznetsov: 输入几乎与const同义,const必须被初始化 NULL是初始化。这个例子特意显示了一个非输入字符串。 Nikolai Semko 2020.01.26 20:53 #1596 fxsaber: 在编译时生成一个警告是个好主意。 是的,这种行为可能只是 "傻瓜"。 显然,由于输入变量 必须被初始化,当变量已经在内存中占据了至少一个字节时,=NULL 被人为地等同于=""。 在MQL5中的条目。 string str=NULL; string str; 是绝对相同的。没有为该变量分配内存。总之,我没有发现任何差异。 例如,在java中,这种记录略有不同,尽管在这两种情况下也没有为变量分配内存。第一个变量(String str = null;)将被视为初始化,尽管没有为变量分配内存,而且变量可以被打印为空。在第二种情况下(String str;),当你试图打印该变量时,将产生一个未初始化变量的错误。 也就是说,MQL5在这方面的容忍度更高。 哪个更好,我甚至不知道。 fxsaber 2020.01.26 20:58 #1597 Nikolai Semko: 显然,由于输入变量 必须被初始化,=NULL 被人为地等同于="", 而该变量已经在内存中占据了至少一个字节。 NULL不是一个初始化,是一个值。你可以在代码中间给任何非恒定字符串变量赋值NULL。而它将等于NULL。 输入不等于NULL,因为在启动时,会创建一个不可见的set-file。从这个文件中,变量值被 "解析 "为输入。无论如何,解析不能输出NULL,因此它在这里放置一个空字符串。 只有input-string有这种行为。对于const-string和其他的,当然是好的。 Nikolai Semko 2020.01.26 21:07 #1598 fxsaber: NULL不是一个初始化,而是一个值。你可以在代码中间把任何非const字符串变量赋值为NULL。而它将等于NULL。 输入不等于NULL,因为在启动时,会创建一个不可见的set-file。从这个文件中,变量值被 "解析 "为输入。解析时根本不会输出NULL,因此会在这里放置一个空字符串。 嗯,这就是我的意思。我同意。 唯一的问题是,在变量声明 阶段给一个字符串分配一个NULL值是没有意义的。 string str1 = NULL; string str2; PRINT((str1==NULL)); // true PRINT((str2==NULL)); // true 这样做只是为了将内存中已经初始化的变量归零,是有意义的。 fxsaber 2020.01.26 21:11 #1599 Nikolai Semko: 嗯,这就是我要说的。我同意。 唯一的问题是,在变量声明 阶段给一个字符串分配一个NULL值是没有意义的。 只有这样做才有意义,才能使内存中的一个变量归零。 #define DEFAULT_VALUE NULL string Str = DEFAULT_VALUE; if (Str == DEFAULT_VALUE) ... 这里的NULL初始化是有意义的。 Nikolai Semko 2020.01.26 21:15 #1600 fxsaber: NULL初始化在这里是有意义的。 是 1...153154155156157158159160161162163164165166167...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
NULL是这样一个模糊的概念,你必须小心地处理它。
再一次,输入的字符串不能是NULL(由 "").其他字符串可以。
再一次,输入的字符串不能是NULL(由 "").其他字符串可以。
再一次,输入的字符串不能是NULL(由 "").其他字符串可以。
再说一遍,为什么你认为不应该有这种转换?我的知识和经验不足以解释这一切。所以要坚持自己的观点。我希望开发商不要顺势而为,改变它。
再说一遍,为什么你认为不应该有这种转换?
我很清楚为什么会发生这种转换。我们在这里谈论的是一个功能,而不是一个错误。
输入几乎与const同义,const必须被初始化
NULL是初始化。这个例子特意显示了一个非输入字符串。
在编译时生成一个警告是个好主意。
是的,这种行为可能只是 "傻瓜"。
显然,由于输入变量 必须被初始化,当变量已经在内存中占据了至少一个字节时,=NULL 被人为地等同于=""。
在MQL5中的条目。
是绝对相同的。没有为该变量分配内存。总之,我没有发现任何差异。
例如,在java中,这种记录略有不同,尽管在这两种情况下也没有为变量分配内存。第一个变量(String str = null;)将被视为初始化,尽管没有为变量分配内存,而且变量可以被打印为空。在第二种情况下(String str;),当你试图打印该变量时,将产生一个未初始化变量的错误。
也就是说,MQL5在这方面的容忍度更高。
哪个更好,我甚至不知道。
显然,由于输入变量 必须被初始化,=NULL 被人为地等同于="", 而该变量已经在内存中占据了至少一个字节。
NULL不是一个初始化,是一个值。你可以在代码中间给任何非恒定字符串变量赋值NULL。而它将等于NULL。
输入不等于NULL,因为在启动时,会创建一个不可见的set-file。从这个文件中,变量值被 "解析 "为输入。无论如何,解析不能输出NULL,因此它在这里放置一个空字符串。
只有input-string有这种行为。对于const-string和其他的,当然是好的。NULL不是一个初始化,而是一个值。你可以在代码中间把任何非const字符串变量赋值为NULL。而它将等于NULL。
输入不等于NULL,因为在启动时,会创建一个不可见的set-file。从这个文件中,变量值被 "解析 "为输入。解析时根本不会输出NULL,因此会在这里放置一个空字符串。
嗯,这就是我的意思。我同意。
唯一的问题是,在变量声明 阶段给一个字符串分配一个NULL值是没有意义的。
这样做只是为了将内存中已经初始化的变量归零,是有意义的。
嗯,这就是我要说的。我同意。
唯一的问题是,在变量声明 阶段给一个字符串分配一个NULL值是没有意义的。
只有这样做才有意义,才能使内存中的一个变量归零。
这里的NULL初始化是有意义的。
NULL初始化在这里是有意义的。
是