看板 C_and_CPP 關於我們 聯絡資訊
想請問各位 標題的寫法是否可能發生錯誤 我原本想表達的是 for(int k=start; k>=end; k--) 其中 start 與 end 皆為 size_t, 但這樣編譯器會產生警告, 所以換成 for(size_t k=start; k+1!=end; k--) 測試後 結果也OK 但是怕會不會只是剛好目前的情況都對 因此上來請問各位 這樣的寫法是否可能發生錯誤 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.40.27 ※ 編輯: HeyScng 來自: 118.169.40.27 (03/13 16:38)
uranusjr:不知道你要幹嘛怎麼知道會不會XD 單就寫法本身是不會錯啦 03/13 17:04
HeyScng:XD 好像也是這樣喔 我是要用來讀陣列內容的 03/13 20:48
HeyScng:我只是想確定 是不是全世界只有我這樣寫@@ 03/13 20:50
HeyScng:想確定說 k+1!=0 是否與 k>=0 一樣 感恩 03/13 20:52
tomnelson:看看你k的型態宣告吧! int k 03/13 20:55
tomnelson:k+1 != 0表示k可以>0或k可以<0 03/13 20:56
tomnelson:那這樣跟你後面 k >= 0 也就是 k不能為"負數" 會一樣嗎? 03/13 20:57
tomnelson:不是酸你,寫程式基本邏輯包括數學推導要有一個程度,加油 03/13 20:58
tomnelson:加油!!! 03/13 20:59
tomnelson:上面第貳行寫錯,是k+1 != 0, k可以>=0或k可以<0, 但不能 03/13 21:01
tomnelson:等於-1 03/13 21:01
tomnelson:加油! 03/13 21:02
uranusjr:start 跟 end 都是 size_t 不會是負的, 所以除非設錯讓 03/13 23:11
uranusjr:跳出條件永遠無法符合, 不然是不會出現 k < 0 的狀況啦 03/13 23:11
HeyScng:了解 謝謝 03/13 23:40
loveme00835:回tomnelson, 如果只是跑一個方向, 語意不一樣是沒關 03/14 00:11
loveme00835:係的, 如果常用迭代器, 為了風格一致應該都改用 != 03/14 00:14
tomnelson:謝謝愛我大大指教,你說的我知道,我是想點出很多人寫程式 03/14 21:00
tomnelson:時型態定義上的盲點,還有資料本身在計算機結構上儲存時, 03/14 21:03
tomnelson:以及被拿來計算時的實際情況,尤其是C語言這種語言更是需 03/14 21:04
tomnelson:要注意,因為C本身一開始是在Bell Lab裡被拿來替代組語設 03/14 21:05
tomnelson:計Unix作業系統用的. size_t並不是native type, 而是從 03/14 21:06
tomnelson:native/base type重宣告(typedef)而來的(通常是unsigned 03/14 21:08
tomnelson:long或unsigned int), 所以看unsigned int與int(signed 03/14 21:08
tomnelson:int)兩者有何不同, 就可以知道問題在哪兒了. 03/14 21:09
tomnelson:以上個人淺見! 03/14 21:10
loveme00835:沒錯, 型態的選擇是很重要的, 上了堂不錯的歷史課 :) 03/14 21:14