一脸懵比:length() 以及 size_t

刚刚刷 leetcode 的时候又发生了一件灵异事件:

Snip20160420_20

//题目很简单:

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

但是报错了:

Snip20160420_21

奇怪点不在这,在于如果我把 两个.length()替换成 int 型的len1和 len2,就 Accepted了。。

就是写成这样就对了:

Snip20160420_22

啊,为什么。。。为什么。。什么都没干啊只是等价替换了啊。。

a82aa4a836975b078e8d_size71_w440_h774

后来机智的我想起,原来在 IDE 里面编程的时候,每次用 .length()会有警告提醒:

Snip20160420_26

size_type。。。

Snip20160420_29

所以说在 unsigned 情况下,如果两个 length()相减,得到的是一个好大好大的值,因为unsingned和unsigned相减得到unsigned的数,也就是如果是负数的话得到的是int的最大值那样的数,但是在转为 int 型之后就会允许相减得到负数,是这样的么。。。验证一下:

Snip20160420_32

啊,我怎么可以这么机智~~(`・ω・´)

746-160311154339~~~~~~~~~~~~

 

❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼

❤ 点击这里 -> 订阅《从放弃C语言到使用C++刷算法的简明教程》by 柳婼

❤ 点击这里 -> 订阅PAT甲级乙级、蓝桥杯、GPLT天梯赛、LeetCode题解离线版