看板 Fortran 關於我們 聯絡資訊
最近看到一個程式 感覺是很舊的版本了 用了不少DIMENSION EQUIVALANCE 甚至是 DO 3 I=1,10 3 I = I + 1 這種沒有enddo的形式 其中裡面的if函數也找不到endif 其中裡面的if函數也找不到endif 其中裡面的if函數也找不到endif 範例如下 READ (*,*) CODE_NO IF (CODE_NO .GE. 50) THEN KK=999 DO 3 I=1,10 3 I = I + 1 範例中 if條件成立時 程式是僅多執行KK=999(與IF同行的statement) 抑或是連下方的DO-loop也算在IF裡面? ----- Sent from JPTT on my Asus ASUS_Z012DA. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.206.42 ※ 文章網址: https://www.ptt.cc/bbs/Fortran/M.1556760577.A.9CE.html
fragmentwing: 有疑惑+1 有的則是沒else卻又不是一行寫完 05/02 09:51
fragmentwing: 然後你的問題應該改成if不成立do是否會執行吧 05/02 09:53
fragmentwing: 不然就算if跟do的狀況分開,if沒執行do還是會執行啊 05/02 09:53
fragmentwing: 另外編譯器好像do if的end常常會當同一種東西 05/02 09:53
fragmentwing: 明明就是do沒end卻回報if出問題…… 05/02 09:54
fragmentwing: 喔喔,原來是因為手機版拆成兩行 05/02 09:55
fragmentwing: 這樣我可以回答你 05/02 09:55
fragmentwing: 這其實可以寫成 05/02 09:56
fragmentwing: if(邏輯成立)執行a 05/02 09:56
fragmentwing: 有時候那個then不拔掉編譯還不給過 05/02 09:57
fragmentwing: 當if寫成一行時,是可以不用end if的 05/02 09:59
fragmentwing: 另外,這樣當然與下一行的do沒關係 這個if只是判斷 05/02 09:59
fragmentwing: 要不要讓k輸入999而已 05/02 09:59
fragmentwing: kk 05/02 09:59
fragmentwing: 補充一點,學C的朋友跟我是我,do這種行代碼寫法根 05/02 10:13
fragmentwing: 本是在整人 05/02 10:13
fragmentwing: 是“跟我說”……自動選字的鍋 05/02 10:14
fragmentwing: 另外fortran的行代碼應用很廣,write read 的format 05/02 10:16
fragmentwing: 格式、 do 迴圈和goto都有 05/02 10:16
fragmentwing: 其實還挺好奇哪些用同樣行代碼會撞到哪些不會 05/02 10:16
fragmentwing: 猜測write和goto不會撞的可能性最高 05/02 10:16
fragmentwing: equivalence不熟,dimension只是宣告成矩陣寫法,我 05/02 10:21
fragmentwing: 也習慣這樣寫,會比單純各別宣告成例如a(10:10)還要 05/02 10:21
fragmentwing: 明顯是矩陣 05/02 10:21
fragmentwing: integer,dimension(10:10) :: a,b,c 05/02 10:21
fragmentwing: 這樣a,b,c都是10*10的二維矩陣 05/02 10:21
fragmentwing: 應該說是陣列 05/02 10:22
espresso1: block if 的 then 右邊不能再放 statement,fortran 77 05/02 18:08
espresso1: 就是這樣了,現在的 compiler 應該不給過 05/02 18:08
special1990: 我老闆就是用這種行代碼的寫法...第一次看的時候超級 06/15 11:16
special1990: 崩潰 06/15 11:16
blc: if(i)10,20,30 06/27 21:13
CGS0: F77 應該就有 ,很多程式語言都有類似的單行精簡版 if 07/08 14:25
erre: 現在還用福船,誰聽到不生氣! 07/13 22:42