C++ while循环的两个版本之间的差异?

C++ while循环的两个版本之间的差异?,c++,C++,我已重新提出我的问题: 我正在读一本书,其中作者提供了以下代码示例: while(do_something && i<imax){ i++; } 以上两个代码示例的区别是什么?是否与性能相关?您在其他地方发表评论: 我不明白代码的作者为什么这样写。do_某事正在读取文件输入\u file>>数组[AMONTREAD] 在这种情况下,功能差异可能比性能更重要。作者的现有代码保证尝试将至少一个元素读入数组,并进一步测试从流到数组中存储的类型的转换是否成功。第二个版本忽略

我已重新提出我的问题:

我正在读一本书,其中作者提供了以下代码示例:

while(do_something && i<imax){
   i++;
}
以上两个代码示例的区别是什么?是否与性能相关?

您在其他地方发表评论:

我不明白代码的作者为什么这样写。do_某事正在读取文件输入\u file>>数组[AMONTREAD]

在这种情况下,功能差异可能比性能更重要。作者的现有代码保证尝试将至少一个元素读入数组,并进一步测试从流到数组中存储的类型的转换是否成功。第二个版本忽略了从流中读取的错误,包括二进制级别的错误和到数组元素类型的转换,因此无论读取的元素数量如何,它都会在最后告诉您i==imax

关于性能-根据您的原始问题
你的第一个循环总是至少做一次,而第二个循环测试它们是不等价的,所以这不是一个公平的比较。do_是一个变量还是一个函数调用?除此之外,它们是不等价的,在很多执行中,两个代码的时间通常并不太重要,决定哪个更快。请注意,C和C++是不同的语言,使用C/C++没有意义。在实际编写代码之前,没有必要尝试优化某些代码,并将代码标识为瓶颈。此外,您试图比较的代码应该以不同的方式做相同的事情,而不是同时做两件不同的事情。法拉利和18轮牵引拖车哪个更快?似乎有一个明确的答案,除非任务是将10吨货物从a点运送到B点。
while(i<imax){
   do_something;
   i++;
}