【发布时间】:2015-01-11 01:14:56
【问题描述】:
使用 auto,我创建了一个变量号并使用 cin.get 来获取值。我使用此代码来执行此操作:
auto number = cin.get();
cout << typeid(number).name() << endl;
似乎即使我输入了一个超过 2147483647 的数字,该值仍然被分配为 int 类型。为什么是这样?如果数字超过最大 32 位 int 值,不应该自动分配 long 类型的值吗?
【问题讨论】:
-
auto在编译时被解析,这意味着它在你运行程序之前就已经决定类型应该是int。 -
首先:
cin.get()不会做你认为的那样。其次:Frxstrem 所说的。 -
您似乎对 auto 的作用有一个不正确的认识。 auto 在编译时推断变量的类型。您在运行时输入的内容对变量类型没有影响。如果你输入“hello world”,它不会神奇地变成一个字符串。
-
感谢您的回答。我现在明白了,如果我使用 cin,我可以从字面上输入任何内容并获得 int 的返回值,我必须在编译之前初始化该值:p