[問題] size()函數產生錯誤

作者: bhbbbbb (影)   2018-02-05 16:18:00
開發平台(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'
先謝謝大家了
作者: djshen (djshen)   2018-02-05 16:32:00
你有查過那段warning的意思?
作者: bhbbbbb (影)   2018-02-05 18:06:00
那段意思丟google翻譯是:隱式轉換失去了整數精度大概懂他的意思,不過我不懂為何會這樣
作者: outofyou   2018-02-05 18:08:00
size()<2的時候?
作者: skyrimrvks   2018-02-05 19:22:00
表達式同時用了無符號跟有號變數
作者: Raymond0710 (雷門)   2018-02-05 20:14:00
seq.size()-2結果unsigned 會導致overflow
作者: LPH66 (-6.2598534e+18f)   2018-02-06 00:25:00
根本原因是 size() 回傳的型態是無號的 size_t
作者: b98901056 (岳岳)   2018-02-06 01:26:00
朝聖一樓<_ _> (離題
作者: steve1012 (steve)   2018-02-06 11:10:00
size type 通常是 sizet 你static cast 還是 cast 成 sizet不是

Links booklink

Contact Us: admin [ a t ] ucptt.com