<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 練習11:While循環和布爾表達式 > 原文:[Exercise 11: While-Loop And Boolean Expressions](http://c.learncodethehardway.org/book/ex11.html) > 譯者:[飛龍](https://github.com/wizardforcel) 你已經初步了解C是如何處理循環的,但是你可能不是很清楚布爾表達式`i < argc`是什么。在學習`while`循環之前,讓我先來對布爾表達式做一些解釋。 在C語言中,實際上沒有真正的“布爾”類型,而是用一個整數來代替,0代表`false`,其它值代表`true`。上一個練習中表達式`i < argc`實際上值為1或者0,并不像Python是顯式的`Ture`或者`False`。這是C語言更接近計算機工作方式的另一個例子,因為計算機只把值當成數字。 現在用`while`循環來實現和上一個練習相同的函數。這會讓你兩種循環,看看兩種循環是什么關系。 ```c #include <stdio.h> int main(int argc, char *argv[]) { // go through each string in argv int i = 0; while(i < argc) { printf("arg %d: %s\n", i, argv[i]); i++; } // let's make our own array of strings char *states[] = { "California", "Oregon", "Washington", "Texas" }; int num_states = 4; i = 0; // watch for this while(i < num_states) { printf("state %d: %s\n", i, states[i]); i++; } return 0; } ``` 你可以看到`while`循環的語法更加簡單: ```c while(TEST) { CODE; } ``` 只要`TEST`為`true`(非0),就會一直運行`CODE`中的代碼。這意味著如果要達到和`for`循環同樣的效果,我們需要自己寫初始化語句,以及自己來增加`i`。 ## 你會看到什么 輸出基本相同,所以我做了一點修改,你可以看到它運行的另一種方式。 ```sh $ make ex11 cc -Wall -g ex11.c -o ex11 $ ./ex11 arg 0: ./ex11 state 0: California state 1: Oregon state 2: Washington state 3: Texas $ $ ./ex11 test it arg 0: ./ex11 arg 1: test arg 2: it state 0: California state 1: Oregon state 2: Washington state 3: Texas $ ``` ## 如何使它崩潰 在你自己的代碼中,應有限選擇`for`循環而不是`while`循環,因為`for`循環不容易崩潰。下面是幾點普遍的原因: + 忘記初始化`int i`,使循環發生錯誤。 + 忘記初始化第二個循環的`i`,于是`i`還保留著第一個循環結束時的值。你的第二個循環可能執行也可能不會執行。 + 忘記在最后執行`i++`自增,你會得到一個“死循環”,它是在你開始編程的第一個或前兩個十年中,最可怕的問題之一。 ## 附加題 + 讓這些循環倒序執行,通過使用`i--`從`argc`開始遞減直到0。你可能需要做一些算數操作讓數組的下標正常工作。 + 使用`while`循環將`argv`中的值復制到`states`。 + 讓這個復制循環不會執行失敗,即使`argv`之中有很多元素也不會全部放進`states`。 + 研究你是否真正復制了這些字符串。答案可能會讓你感到意外和困惑。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看