【发布时间】:2014-07-05 04:11:45
【问题描述】:
我有一个代码被更改为在 64 位模式下编译,而之前由于各种原因它是在 Win32 中编译的。这导致了一些清理工作以解决一些警告,因此我正在挑选代码并发现如下所示:
class foo
{
public:
int foo() { return data_.size()-1; }
private:
std::vector<int> data_;
};
STL 容器上的 size() 方法返回无符号值。返回值被转换为有符号整数值,因此在某些时候会发生转换。
我不确定这里的优先级。 size() 返回的值是否会被强制转换为 int,然后减去 1,如果 size 为零,这将导致返回值为 -1?或者我们会从 unsigned int 中减去 1,如果调用它时容器为空,可能会做坏事?
谢谢!
【问题讨论】:
-
它将是无符号的 = 无符号的 - 1;返回有符号(无符号) 其中无符号(0) - 1 == 无符号(最大值)
标签: c++ types stl casting type-conversion