看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) CodeBlock 問題(Question): 安安各位高手大家好,小弟我CPP新手啦 最近寫題目的時候有一題丟去judge 一直說我Runtime error 我找我已經accepted的朋友對了一下 幾乎一模一樣 最後才發現一個不一樣的地方 簡述一下那題(下面會附上程式碼): 就是給定一個長度為n的數列,然後output區域極值的數量 我的做法是先把給的那n個數丟進一個叫seq的vector 最後我是把for迴圈條件句中的i<seq.size()-2 改成i<n-2才accepted https://ideone.com/jrAIvY 不過我不明白這兩個有什麼不一樣 隔天又出現了一個差不多的問題 https://ideone.com/5dYVz5 我把問題寫在裡面了,還有一點就是剛剛用XCode測試 tem.size()跳出了一個warning: Implicit conversion loses integer precision: 'size_type' (aka 'unsigned long') to 'int' 先謝謝大家了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.178.253 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1517818693.A.4C4.html
djshen: 你有查過那段warning的意思? 02/05 16:32
bhbbbbb: 那段意思丟google翻譯是:隱式轉換失去了整數精度 02/05 18:06
bhbbbbb: 大概懂他的意思,不過我不懂為何會這樣 02/05 18:06
outofyou: size()<2的時候? 02/05 18:08
skyrimrvks: 表達式同時用了無符號跟有號變數 02/05 19:22
Raymond0710: seq.size()-2結果unsigned 會導致overflow 02/05 20:14
LPH66: 根本原因是 size() 回傳的型態是無號的 size_t 02/06 00:25
b98901056: 朝聖一樓<_ _> (離題 02/06 01:26
謝謝大家 我回去翻了我的primer,發現我的基本觀念還真是糟糕 但若我今天想要拿一個假設string::size_type型別的數拿去跟型別為int的數做運算 是否勢必要做型別轉換,例如: string::size_type ix = 1024 ; int ival = ix ; // 這樣會跳出警告,因為long unsigned 大於 int 如果我確定那個變數ix並不會超過int的範圍,是否應該這樣寫 int ival2 = static_cast<string::size_type>(ix); 但我的Xcode仍跳出警告,請問是否我的理解錯誤了? ※ 編輯: bhbbbbb (59.120.178.253), 02/06/2018 10:12:14
steve1012: size type 通常是 sizet 你static cast 還是 cast 成 s 02/06 11:10
steve1012: izet不是 02/06 11:10