回覆列表
  • 1 # 使用者704227834582

    題主的問題:

    C語言中迴圈多少次,這個迴圈條件到底是怎麼判斷的?其實是賦值表示式的問題吧。假定題主實際關心的程式碼的for迴圈的迴圈體沒有做什麼奇怪的事情來改變迴圈次數。答案自然是0次。可以先把for迴圈解糖為while迴圈的形式:所以迴圈條件就看"i = j = 0"這個表示式的值。C語言裡,賦值運算子("=")是右結合(right-associative)的雙目運算子;賦值是一個表示式,可以用於其它表示式之中。所以等價於賦值表示式其實要完成兩件事情:賦值:將賦值運算子右邊的表示式的值賦予左邊的運算元將賦值後左邊的運算元的值當作整個表示式的值。如評論裡 @Sunchy321指正的,左邊與右邊的型別未必一樣,整個表示式的值是看左邊運算元的。所以"j = 0"作為表示式的值是0,然後"i = (j = 0)"的值也是0。所以題主的程式碼可以變為:所以迴圈0次。===========================================================手閒,順手dump個Clang給的AST好了。對這段原始碼:Clang生成的AST形如:其中題主關心的迴圈條件部分是:也就是跟i = (j = 0)等價的形式:

  • 2 # 使用者6704656755005

    都是對的,

    a[j++] = a[i];

    的意思 就是... a[j] = a[i] j++ 呵呵

  • 中秋節和大豐收的關聯?
  • 爐石傳說亂鬥模式“新年慶典”好玩嗎?應該怎麼玩?