“auto”不能与任何其他类型说明符组 的探讨(附其余存储类别的使用格式)
对谭浩强编著《C++程序设计(第3版)》第110至111页,4.12.2与4.12.3的自动变量auto在vs2010环境下如何书写探讨。
(末尾附:对其余存储类别的使用格式的探讨)
环境:vs2010
例题:4.12
页码:P111
例题代码如下:
#include <iostream>
using namespace std;
int f(int a)
{
auto int b=0;
static int c=3;
b=b+1;
c=c+1;
return a+b+c;
}
int main ()
{
int a=2,i;
for (i=0;i<3;i++)
cout <<f(a)<<" ";
cout <<endl;
return 0;
}
系统会报错:
error C3530: “auto”不能与任何其他类型说明符组合
1>
1>生成失败。
1>
笔者查阅相关资料并且试验后,关于vs2010环境下auto的使用得出一下三条结论:
- auto 直接加 变量名 并且赋值;
如:
auto x=3;
auto y='a';
- 数据类型名 auto 变量名;
如:
int auto x=3;
- 形如
auto int x=3;
auto char y='a';
不可以,系统会报错。
参考:参考来源
问题:"auto”不能与任何其他类型说明符组合小结
总结:
1.新版C++定义auto不能和***任何类型***进行组合;
2.auto x = 14;表示把x自动转换成整型,归结为 auto 变量名 = 值(可以是基本数据类型):auto根据后面的值自动把该变量转换成相应的类型。
3.大多数以普通声明方式声明的变量都是auto变量,他们不需要明确指定auto关键字,默认就是auto;
4.auto变量在离开作用域是会被程序自动释放,不会发生内存溢出。
注意
其他的存储类别,如:static,register,extern,都符合
“存储类别 数据类型名 变量名 (赋值)”
这一基本格式;
如:
static int a;