劇多
首頁
資訊
體育
娛樂
汽車
投資
財經
軍事
科技
數碼
科學
遊戲
歷史
健康
政治
影視
旅遊
育兒
美食
時尚
房產
農業
社會
文化
教育
技術
美文
情感
故事
家居
職場
自然
闢謠
心理
攝影
漫畫
生活
其它
Club
Tips
熱門話題
搜尋
註冊
登入
首頁
>
Club
>
2021-02-16 19:02
c程式,a[j++]=a[i]是什麼意思?
14
回覆列表
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++ 呵呵
發表回復
∧
中秋節和大豐收的關聯?
∨
爐石傳說亂鬥模式“新年慶典”好玩嗎?應該怎麼玩?
熱門排行
積碳清除劑真的有用嗎?
妻子的秘密世界女主是誰?
為什麼豐田4s店不讓異地上牌?
篩選出來的數據怎麼改序號?
植物大戰僵尸裡的兩階植物是什麼?
黃飛鴻血戰白蓮教教主是什麼電影?
316鋼刷和304鋼刷哪個好?
奧特曼系列ol夏川遙輝特訓條件?
15年銳志定速巡航怎麼開啟?
北汽威旺m50f可以改裝超齒嗎?
題主的問題:
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)等價的形式: