便携性是否与汽车有关?

时间:2015-03-20 18:11:09

标签: c++ c++11 auto

auto很有用,因为您不必写出类型。但我想知道的是,auto推导出的类型是否会影响类型可能不同的系统上的程序结果。我使用auto编写的程序可以随身携带,还是我必须手动担心类型?

2 个答案:

答案 0 :(得分:4)

如果您的类型需要特定或最小尺寸,则可能需要使用<stdint.h>中的这些类型,否则auto不应存在可移植性问题。

答案 1 :(得分:2)

auto的结果是否可移植?好吧,让我们来看看这个简单的例子:

auto i = 123456;

这会到处编译吗?是。到处都是一样的意思吗?在16位系统上,这会将i声明为long。那是问题吗?并不是的。实际上,它恰好通过在需要时声明更大的类型来帮助实现可移植性。但那只是运气:

auto i = 192 * 643;

溢出,虽然它在数学上是一样的。

在第二个示例中,您不知道std::vector<int>::iterator的实际类型是什么,因此auto i = myVec.begin()具有未知类型。这种类型在编译器之间会有所不同。但同样,这些细节并不重要。重要的是,i可用于迭代(和更改)myVec