2017-03-12 17 views
-3
#include<stdio.h> 
    int main () 
     { 
      int x = 0; 
      while (x <= 10) 
       for (; ;) 
        if (++x % 10 == 0) 
        break; 
      printf("%d", x); 
      return 0; 
     } 

我知道程序產生的輸出是什麼,但輸出在我幹運行時有點混亂。你能解釋一下嗎?雖然看起來很簡單,但這個c程序的輸出讓我感到困惑

+2

因爲程序寫入的方式很難閱讀。 –

+6

*產生輸出* - 輸出什麼?除非您告訴我們,否則我們如何知道您會感到困惑? – StoryTeller

回答

1

它打印20. 我想你是期待0,如果這是你的錯誤'++ x'的情況下。 任何方法,我會解釋這裏究竟發生了什麼。

  while (x <= 10) 
      for (; ;) 
       if (++x % 10 == 0) 
       break 

在這之前x = 0。它會經歷'同時',然後'爲'。 ++ x變爲1,如果失敗,因爲1%10不等於0. x保持遞增直到x = 10,現在如果滿足條件,則爲「10%10 == 0」爲真,如果條件爲真並且去打破,出來'爲'。

現在x = 10,它經歷爲「10 < = 10」爲真。它通過'for'。 ++ x變爲11,所以如果條件失敗,'11%10 == 0'爲false。 x持續增加,直到值爲20.如'20%10 == 0,如果條件爲真並且中斷,則從'for'出來。

現在條件失敗,'20 < = 10'爲false。

程序打印'20'

+0

感謝您的答案...........我期待的答案將是10 .........然後我只是意識到,while循環執行2次,然後條件變得虛假和打印20 –