首先,在开始之前,我使用的是 VC++ 2008 Professional,在 Windows 操作系统上运行 Intel core2。我也知道,除了运行 Windows 的 core2/corei7 之外,该代码永远不会在任何其他设备上执行。
我有一个带有 2 个条件的 while 循环,看起来像这样:注意:这是一个非常简化的版本。
while((a != b) && (array[a] < c))
如果第一个条件(a != b)
产生错误,那么第二个条件是否会被评估?或者循环会在那里终止吗?
我做了一些测试,似乎确实如此。
但是,这里有问题。当第一个条件评估为假时,如果第二个条件被评估,则将生成访问冲突。但是,据我所知,一旦第一个条件被评估为假,程序就不会费心评估第二个条件并退出循环,从而拯救了我。
问题是,如果不让我非常漂亮和整洁的代码突然爆发,我就无法完全摆脱访问冲突问题。但是,由于小“错误”(我知道这是编译器优化,而不是错误),我似乎能够摆脱它。我也知道这可能不是一个好的编程习惯,但老实说,在我的情况下,如果它有效,我已经领先了。
我的问题是,这个“错误”或编程弊端有一天会回来咬我吗?即使考虑到我测试了这一部分的地狱并且只会使用它一次?