[問題] 沒有endif的版本

看板Fortran作者 (踢屁屁)時間5年前 (2019/05/02 09:29), 編輯推噓5(5029)
留言34則, 6人參與, 5年前最新討論串1/1
最近看到一個程式 感覺是很舊的版本了 用了不少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

05/02 09:51, 5年前 , 1F
有疑惑+1 有的則是沒else卻又不是一行寫完
05/02 09:51, 1F

05/02 09:53, 5年前 , 2F
然後你的問題應該改成if不成立do是否會執行吧
05/02 09:53, 2F

05/02 09:53, 5年前 , 3F
不然就算if跟do的狀況分開,if沒執行do還是會執行啊
05/02 09:53, 3F

05/02 09:53, 5年前 , 4F
另外編譯器好像do if的end常常會當同一種東西
05/02 09:53, 4F

05/02 09:54, 5年前 , 5F
明明就是do沒end卻回報if出問題……
05/02 09:54, 5F

05/02 09:55, 5年前 , 6F
喔喔,原來是因為手機版拆成兩行
05/02 09:55, 6F

05/02 09:55, 5年前 , 7F
這樣我可以回答你
05/02 09:55, 7F

05/02 09:56, 5年前 , 8F
這其實可以寫成
05/02 09:56, 8F

05/02 09:56, 5年前 , 9F
if(邏輯成立)執行a
05/02 09:56, 9F

05/02 09:57, 5年前 , 10F
有時候那個then不拔掉編譯還不給過
05/02 09:57, 10F

05/02 09:59, 5年前 , 11F
當if寫成一行時,是可以不用end if的
05/02 09:59, 11F

05/02 09:59, 5年前 , 12F
另外,這樣當然與下一行的do沒關係 這個if只是判斷
05/02 09:59, 12F

05/02 09:59, 5年前 , 13F
要不要讓k輸入999而已
05/02 09:59, 13F

05/02 09:59, 5年前 , 14F
kk
05/02 09:59, 14F

05/02 10:13, 5年前 , 15F
補充一點,學C的朋友跟我是我,do這種行代碼寫法根
05/02 10:13, 15F

05/02 10:13, 5年前 , 16F
本是在整人
05/02 10:13, 16F

05/02 10:14, 5年前 , 17F
是“跟我說”……自動選字的鍋
05/02 10:14, 17F

05/02 10:16, 5年前 , 18F
另外fortran的行代碼應用很廣,write read 的format
05/02 10:16, 18F

05/02 10:16, 5年前 , 19F
格式、 do 迴圈和goto都有
05/02 10:16, 19F

05/02 10:16, 5年前 , 20F
其實還挺好奇哪些用同樣行代碼會撞到哪些不會
05/02 10:16, 20F

05/02 10:16, 5年前 , 21F
猜測write和goto不會撞的可能性最高
05/02 10:16, 21F

05/02 10:21, 5年前 , 22F
equivalence不熟,dimension只是宣告成矩陣寫法,我
05/02 10:21, 22F

05/02 10:21, 5年前 , 23F
也習慣這樣寫,會比單純各別宣告成例如a(10:10)還要
05/02 10:21, 23F

05/02 10:21, 5年前 , 24F
明顯是矩陣
05/02 10:21, 24F

05/02 10:21, 5年前 , 25F
integer,dimension(10:10) :: a,b,c
05/02 10:21, 25F

05/02 10:21, 5年前 , 26F
這樣a,b,c都是10*10的二維矩陣
05/02 10:21, 26F

05/02 10:22, 5年前 , 27F
應該說是陣列
05/02 10:22, 27F

05/02 18:08, 5年前 , 28F
block if 的 then 右邊不能再放 statement,fortran 77
05/02 18:08, 28F

05/02 18:08, 5年前 , 29F
就是這樣了,現在的 compiler 應該不給過
05/02 18:08, 29F

06/15 11:16, 5年前 , 30F
我老闆就是用這種行代碼的寫法...第一次看的時候超級
06/15 11:16, 30F

06/15 11:16, 5年前 , 31F
崩潰
06/15 11:16, 31F

06/27 21:13, 5年前 , 32F
if(i)10,20,30
06/27 21:13, 32F

07/08 14:25, 5年前 , 33F
F77 應該就有 ,很多程式語言都有類似的單行精簡版 if
07/08 14:25, 33F

07/13 22:42, 5年前 , 34F
現在還用福船,誰聽到不生氣!
07/13 22:42, 34F
文章代碼(AID): #1SoaW1dE (Fortran)
文章代碼(AID): #1SoaW1dE (Fortran)