Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在发生硬件故障时,哪一个更有可能发生故障:(int i=0;i!=n+;+;i)或(int i=0;i<;n+;i)?_C#_Algorithm_Bit Manipulation_Hardware_Integer Arithmetic - Fatal编程技术网

C# 在发生硬件故障时,哪一个更有可能发生故障:(int i=0;i!=n+;+;i)或(int i=0;i<;n+;i)?

C# 在发生硬件故障时,哪一个更有可能发生故障:(int i=0;i!=n+;+;i)或(int i=0;i<;n+;i)?,c#,algorithm,bit-manipulation,hardware,integer-arithmetic,C#,Algorithm,Bit Manipulation,Hardware,Integer Arithmetic,显然, for ( int i = 0; i != n; ++i ) 工作原理与 for ( int i = 0; i < n; ++i ) for(int i=0;i

显然,

for ( int i = 0; i != n; ++i )
工作原理与

for ( int i = 0; i < n; ++i )
for(int i=0;i

但是开发者对前者感到不安是正常的吗?我总是担心一些反常的事故会使前一个循环中的
I
错过
n
。然而,在第二个循环中,如果
i
以某种方式停止正确递增,那么
我可以同情你,因为我在开始编程时也有同样的感觉。这只是你必须要习惯的东西。两种方法都有时间和地点。例如,如果使用C++标准库,请使用第一种方法:

for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
for(std::vector::iterator it=myvector.begin();it!=myvector.end();+it)
如果只是循环固定次数,则约定使用第二种方法:

for (unsigned int i = 0; i < N, i++)
for(无符号整数i=0;i

不要浪费时间担心硬件问题。那是别人的工作。

我可以同情你,因为我开始编程时也有同样的感觉。这只是你必须要习惯的东西。两种方法都有时间和地点。例如,如果使用C++标准库,请使用第一种方法:

for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
for(std::vector::iterator it=myvector.begin();it!=myvector.end();+it)
如果只是循环固定次数,则约定使用第二种方法:

for (unsigned int i = 0; i < N, i++)
for(无符号整数i=0;i

不要浪费时间担心硬件问题。这是其他人的工作。

我认为选择 要防止的错误类型是在循环内修改循环计数器


相反的论点是,任何将i更改为>n的代码都可能是错误的(除非有人这样强制循环退出-这是一个坏主意,IMHO),因此您应该允许循环从数组末尾运行并失败(假设您所在的平台检测到对数组末尾的访问,Java,c#,…).

我认为选择 要防止的错误类型是在循环内修改循环计数器


相反的论点是,任何将i更改为>n的代码都可能是错误的(除非有人这样强制循环退出-这是一个坏主意,IMHO),因此您应该允许循环从数组末尾运行并失败(假设您所在的平台检测到对数组末尾的访问,Java,c#,…).

如果你有硬件故障,那么
for
循环的工作可能是你最不担心的。如果你的处理器内部寄存器中有位翻转,那么你就有更大的问题。我认为使用
但是开发者对前者感到不安是正常的吗?开发者担心这是不正常的影响CPU和RAM行为的硬件故障。可能是磁盘驱动器和其他机电设备。另一方面,在最大的超级计算机上,具有
O(10^6)
处理器内核,执行期间单个内核的故障是一个真正的问题。该死,现在我很担心。您可能需要指定n>=0。否则,即使硬件工作正常,第一个循环也永远不会终止:-)如果您有硬件故障,
for
循环的工作方式可能是你最不担心的。如果处理器内部寄存器中的位发生翻转,那么你就会遇到更大的问题。我认为使用
是正常的,但是开发人员对前者感到不安吗?开发人员担心硬件故障会影响CPU和RAM的行为是不正常的。可能是磁盘驱动器和其他机电设备。另一方面,在一台拥有
O(10^6)
处理器内核的最大超级计算机上,单个内核在执行过程中的故障是一个真正的问题。该死,现在我很担心。你可能需要指定n>=0。否则,即使硬件工作正常,第一个循环也不会终止:-)