【发布时间】:2018-02-06 15:29:30
【问题描述】:
我曾尝试运行此代码
// vector::size
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myints;
std::cout << "size: " << myints.size() << '\n';
std::cout << "size: " << myints.size()-1 << '\n';
return 0;
}
出乎意料的是输出来了
0
垃圾价值
应该是
0
-1
这里是:code
【问题讨论】:
-
看类型。
-
我严重怀疑您的程序是否真的输出“垃圾值”。
-
不应该。它是无符号类型,没有负值。
-
@molbdnilo:这是个好问题。我需要检查,但我认为
cout的行为是为超过一定大小的unsigned类型定义的实现。似乎理论上,标准允许“垃圾值”。 -
@Bathsheba,据我所知,
operator<<和num_put::do_put,具有默认其他设置的unsigned long long将以与调用printf("%ull", val)相同的方式输出,同样对于其他基本的无符号类型。我不太确定size_t是否会出现潜在问题,因为它要么适合过载,要么会导致歧义。
标签: c++ debugging vector issue-tracking