[问题] 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