2014-04-06 70 views
0

在c + +中的自动命令11是静态绑定(打字)或动态绑定?自动在c + + 11是静态类型或动态类型

即,如果我有此代码

auto x = 5; 

将编译器决定该“x”是一个int或将它运行时descovered?

另外,以下代码中x的类型是什么?

auto x = 5, y = 4.5 
+0

**静态**。编译器会从你分配的内容中推导出它。 – OMGtechy

+2

对于'auto x = 5,y = 4.5;',g ++给出:'错误:'auto'的不一致推导:'int',然后'double'' – Jarod42

+0

这是**类型推理**,自动替换spelled-在rhs上表达结果的名称。 – berkus

回答

8

这就是所谓的类型推断。键入仍然是静态,但是让编译器确定表达式的类型。

具体为auto x = 5;,编译时为is translated to int x = 5;。出于这个原因,你总是在初始化时提供一个明确的表达式。例如auto x;wouldn't work