size_t相当于unsigned long long

没想到写个循环也能写出大道理

UPD: 2025-07-15

问题

代码

1
2
3
4
5
vector<int> vec;
// some code here
for (int i = 0; i < vec.size() - 1; i ++ ) {
    cout << vec[i] << ' ';
}

原本思路

只打印$vec$的前$|vec| - 1$个元素,就用这个挺好!

显示出的问题

Segmentation Fault 11/0/11

解读

1
2
C:/xxx/xxx.cpp:12:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long long unsigned int'} [-Wsign-compare]
     for (int i = 0; i < vec.size(); i ++ ) {

可以发现如果size是$0$,又因为 size_typeunsigned long long,那么就会减出$18446744073709551615$,明显是要报错的。

使用 Hugo 构建
主题 StackJimmy 设计