Операция инкремента и декремента применяются только к переменным, к константам не применяются. Префиксныe инкремент (++i) и декремент (--k) применяются к переменной непосредственно перед использованием этой переменной в выражении. Могут возникнуть вычислительные проблемы при переносе вышеуказанного выражения из одной среды программирования в...
著名的求职面试问题。
哪些东西会出现在i?
MQL5输出 12.MSVisual Studio 输出 13.因为它在C++中似乎是有效的。所以我问了一下,决定以C++为例进行阅读。相同的价值由一个只是差异。在第二种情况下,似乎是将5分配给 "y",然后再加上,而在第一个例子中,则是先加上,然后再分配(我花了很长时间才弄清楚它是如何工作的 =D )
在mql5中它们是平等的操作,在c++中它们是不同的,下面只是给了你一个关于c++的测试例子))
著名的求职面试问题。
哪些东西会出现在i?
MQL5给出了12。 MS Visual Studio给出了13。因为有副作用,所以没有定义。在这种情况下,完全是一种三重效应。不同的优化方法可能会以不同的方式计算变量值。出于优化的考虑。
在mql5中它们是等价的操作,在c++中它们是不同的,下面只是给了你一个关于c++的测试例子))
你从哪里得到它的?你有没有比较过array[++i]=i和array[i++]=i的操作结果?
这里有一个谜题给你。后缀操作和前缀操作之间有什么区别?
工作面试中的一个著名问题。
一个愚蠢的、不必要的问题,只显示被采访者是否知道什么是UB,与讨论的话题没有什么关系。
阿列克谢-罗季奥诺夫。
我坐在这里想,前缀形式的代码怎么能派上用场?
编译器有足够的头脑在需要时优化后缀形式。
你从哪里得到的投入?你有没有比较过array[++i]=i和array[i++]=i 的操作结果?
这里有一个令人费解的问题。后缀操作和前缀操作之间有什么区别?
array[++i]=i和array[i++]=i 有什么关系,我怎么能比较没有在对话中出现过的东西...
如果在争议的框架内,mql有一些变化,而你又知道,那么你作为主持人,有义务告知对话的参与者,而不是试图做语法知识测试,这绝对不是你的职责...
而且,在mql帮助中显示了所有关于后缀和前缀操作的说明,但前几年的测试表明,这些操作在mql中是等同的
顺便说一下,我刚刚检查了对话框中的例子
build 1816 result == 12
这是一个愚蠢的、不必要的问题,它只揭示了受访者是否知道什么是UB,与讨论的主题没有什么关系。
嗯,实际上前缀的形式更快。
此外,我认为在你的代码中使用这样的结构是不可接受的。
首先,因为在不同的实现中工作的模糊性,更因为在这样的代码中很容易出错,而要弄清它的意义则不那么容易。
代码应该是透明的,可以一目了然。
此外,在我看来,在代码中使用这样的结构是完全不可接受的。
首先,因为在不同的实现上工作的模糊性,甚至更多--因为在这样的代码中很容易犯错,而且不容易理解。
代码应该是透明的,可以一目了然。
是时候把mql5的帮助改为语言惯例和规则的形式了
array[++i]=i和array[i++]=i 有什么关系,我怎么能比较对话中没有发生的...
如果在争端的框架内,mql有变化,而且你知道,那么作为主持人,你有义务把它带给对话的参与者,而不是试图进行语法知识测试,这绝对不是你的职责...
而且,在mql帮助中显示了所有关于后缀和前缀操作的说明,但前几年的测试表明,这些操作在mql中是等同的
顺便说一下,我刚刚检查了对话中的例子
build 1816 result == 12
但你的例子纯粹是理论上的。它们只为学生准备。没有一个头脑正常的程序员会将它们发布到生产中。
后缀和前缀的增量 和减量实际上首先在循环中使用。而它们被称为增量和减量!
这里有一些例子
и
如果你声称前缀和后缀操作的工作方式相同,那么,请在你的手中举旗,在你的脖子上打鼓。
在前缀递增的情况下,你会得到一个未初始化的空数组元素,并且在最后一次迭代时出现数组超范围的错误。
PS。决定重读我们关于这个问题的文档,在绿色链接https://www.mql5.com/ru/docs/basis/operations/mathoperation
重要说明
int i=5。
int k = i++ + +i;
当把上述表达式从一个编程环境移植到另一个环境时(例如,从Borland C++到MQL5),你可能会遇到计算问题。在一般情况下,计算的顺序取决于编译器的实现。在实践中,有两种实现后减法(后增法)的方法。
在MQL5中,我们目前实现了计算后减(后增)的第一个方法。但即使有了这些知识,最好也不要尝试使用这招。