首頁>Club>
11
回覆列表
  • 1 # 使用者3492009249286

    C語言的for與while等價,換句話說就是個加了語法糖的while,兩者編譯之後是沒有差別的。早年的一些編譯器會導致部分for的指令效率微高於while,但現在都沒有區別了。

    但在更古老的語言裡並非如此。比如50年代誕生的FORTRAN,它的DO迴圈與現在的FOR迴圈相似,但功能更簡單,語法類似下面這樣:

    上面表示了變數C從1開始每次自增2到10為止的迴圈。

    早年的BASIC(不是現在的Visual Basic)也有類似的語法,如:

    它們跟C的for有什麼區別呢?一看就知道,這種for的作用僅限於純數字的自增或自檢,不能使用複雜變數與表示式。換言之這時的for只是while在簡單數字序號迴圈場景下的代替品,是加了語法糖的子集。

    而C對for進行了極大的強化,初始、條件、遞增三個部分可以使用任何表示式。從此for有了完全代替while的能力,只是為了相容程式設計師們的編碼習慣,保留了while這個關鍵字而已。

    一些更現代的語言裡還加入了foreach或for...in...這種專門用來遍歷集合的語法糖。也有python、ruby這種直接拋棄了C語言三段式for,只保留for...in...,而把非遍歷型的迴圈通通放到while裡的做法。

  • 中秋節和大豐收的關聯?
  • 溼氣重是怎麼回事?是什麼引起的?