程式設計中 if或者迴圈的邊界判斷 使用大於(小於)等於和大於(小於)有區別嗎?哪種更好?

時間 2021-06-26 16:51:19

1樓:nullptr

這兩的區別,就是半開半閉區間和全閉區間的區別,在C系這種風格的for語法結構下,常規使用的話,對於迴圈變數遞增的情況下,沒有任何區別,你只要確定你的寫法確實是迴圈了你想要的次數就可以(乙個團隊中最好也統一風格,避免閱讀不小心看錯了)。

遞減之類的話,有些時候需要考慮好,例如size_t型別遞減迴圈,如果按照下面這個寫法,是死迴圈的,因為無符號size_t型別永遠都大於等於0

for(

size_ti=

10;i>=0;

--i);//死迴圈

for(

size_ti=

10;i>0;

--i);//

這樣就不會

不過一般迴圈終止條件可能是個變數,也就是上面的9、10不一定就是確定的數值,可能是個表示式(比如在某個函式裡,某個函式引數控制了迴圈的次數),這樣的話就看具體引數的含義了,就是你希望不希望取到之類的。如果對整個過程比較明確的話,兩種寫法是沒有啥區別的,注意好邊界即可。

但各類程式語言中,預設的都是左閉右開的規則,例如python中:

fori

inrange(0

,10,1

)# 區間是[0, 10)步進是1

演算法中也是,相對而言,左閉右開是比較優雅的習慣。

為何STL中的容器和演算法都是用的左閉右開區間?

程式語言中for迴圈和while迴圈的深層區別是什麼?

寒風 看了一下,17年還有人答,我也湊個熱鬧,18年來答下根據我的理解,1 while適合用於狀態變化控制,說高大上點就是while適合做狀態機,而for僅僅是為了迴圈而迴圈 2 另外乙個區別,for迴圈一般都是這麼用的,for int i xx i3 和一有點類似,通常剛學程式的時候會告訴你應盡量...

程式設計中遇到不確定迴圈層數,如何解決?

完全沒看懂你給的程式跟下面的描述有什麼關係 如果想實現文字描述的demo裡的效果的話,可以這樣 用函式式的方法來寫,對於a裡的每個元素a1,計算它跟b的數乘然後求和,最後把這些和中大於等於2的數過濾出來 a 1,2 3 b 3,4,5 print filter lambdas s 2,map lam...

怎樣運用c語言中的for迴圈程式設計菱形

Big鐵鎚愛笨笨 兩個解法,都已實驗過。請看注釋理解 解法1 include int main for int i n 1 i 0 i for int i n 1 i 2 n 1 i 李展發 藏雲 include intmain for i 0 i 9 i puts a i return0 最正確的...