文章目录
1.c语言中,关键字auto用于声明一个变量为自动变量
自动变量也称局部变量。将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。所有局部变量默认都是auto,一般省略不写。
auto声明全局变量时,编译出错:
auto int i;
void main(void)
{
}
auto声明局部变量时,编译正常:
void fun(auto int i)
{
auto int j = i;
}
void main(void)
{
auto int i = 1;
fun(i);
}
2.c语言中,只使用auto修饰变量,变量的类型默认为整型
void main(void)
{
double a = 1.2, b = 2.7;
auto c = a + b;//c语言中,c = 3
}
3.c++中,关键字auto是一个类型说明符
通过变量的初始值或者表达式中参与运算的数据类型来推断变量的类型。编程时通常需要把表达式的值赋给变量,这就要求在声明变量时清楚地知道表达式的类型,c++11新标准引入了auto 类型说明符,让编译器去分析表达式的类型。由于需要编译器推断变量或表达式的类型,所以auto定义的变量必须初始化。而c语言中,使用auto定义的变量可以不予初始化,因为此时变量默认为整型。该部分参照博客:浅析C语言auto关键字和C++ 中的auto关键字
void main(void)
{
double a = 1.2, b = 2.7;
auto c = a + b; // c++中, c = 3.9
}
题目:编写一段程序,读入一段包含标点符号和空格的字符串,将标点符号和空格去除后输出字符串剩余的部分
c++源码:
//编写一个程序,读入一个包含标点符号和空格的字符串,将标点符号和空格去除后输出字符串剩余的部分
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
/*src为源字符串即要操作的字符串,dest为目标字符串,存放操作结果*/
string src, dest;
getline(cin, src); /*从输入中读取一行赋值给str*/
for (auto c : src) /*对str中的每个字符*/
{
if (!ispunct(c) && c != ' ') /*如果该字符不是标点符号和空格*/
{
dest.push_back(c); /*把该字符尾插到dest中*/
}
}
cout << dest << endl; /*输出dest中的内容*/
system("pause");
return 0;
}
示例: