C++变量名的定义:
1、在名称中只能使用字母、字符、数字和下划线
2、名称的第一个字符不能是数字
3、C++大小写敏感(区分大小写字符)
4、不能将C++关键字用作名称
5、(重点)双下划线或大写字母开头的名称被保留给现实(编译器及其使用的资源)使用以一个下划线开头的名称被保留给现实,用作全局标识符
C++赋值的方法:(以下的都是合法的)
#include<iostream>
int main(void)
{
using namespace std;
int m=10;
cout<<m<<endl;
int l(10);
cout<<l<<endl;
int n;
n=10;
cout<<n<<endl;
int o={10};
cout<<o;
return 0;
}
进制转换:
#include<iostream>
int main(void)
{
using namespace std;
int n=16;
//十六进制 输出
cout<<hex;
cout<<n<<endl;
//十进制输出
cout<<dec;
cout<<n<<endl;
//八进制输出
cout<<oct;
cout<<n<<endl;
return 0;
}
防止程序运行时的闪退情况:
#include<iostream>
int main(void)
{
using namespace std;
cin.get();
return 0;
}
cout.put(ch)输出一个字符,可以代替<<运算符:
#include<iostream>
int main(void)
{
using namespace std;
cout.put('!');
return 0;
}
转义序列:
#include<iostream>
int main(void)
{
using namespace std;
cout<<"\\ "<<" \?"<<" \%"<<" %%";
return 0;
}
大致上与C语言一致,其中%的输出不再使用%%表示
运用转义序列制作的小特效
#include<iostream>
int main(void)
{
using namespace std;
cout<<"Please enter your password:_____\b\b\b\b\b";
long code;
cin>>code;
cout<<"What you enter is "<<code<<endl;
return 0;
}
通用字符名
C++标准还允许实现提供扩展源字符集和扩展执行字符集
\u 后面是8个十六进制位
\U后面是16个十六进制位
例子:
#include<iostream>
int main(void)
{
using namespace std;
cout<<"Let it go g\u20E2teau.\n";
return 0;
}
关于wcha_t(需要了解):
wchar_t(宽字符类型)可以表示扩展字符集
wchar_t是一种整型类型,他有足够的空间,可以表示系统使用的最大扩展字符集
cin和cout将输入和输出看作是char流,因此不适于用来处理wchar_t类型。
iostream头文件的最新版本提供了作用类似的工具——wcin和wcout,可用于处理wchar_t
#include<iostream>
int main(void)
{
using namespace std;
wcout<<L"tall"<<endl;
return 0;
}
上述代码将把每个字符存储在一个 两个字节 的内存单元中。
关键字const
关键字const叫做限定符,因为他限定了声明的含义
通用格式:
const type name = value;
(功能类似于#define)
const int num=100;
int main(void)
{
using namespace std;
cout<<num;
return 0;
}
浮点数
一个浮点数可以表示为基准值和缩放因子。
缩放因子的作用就是移动小数点的位置
科学记数法中E或e表示的是10,而不是自然底数
C++有三种浮点类型:float 、double 、long double
这些类型是按他们可以表示的有效数位(数字中有意义的位)和允许的指数最小范围来描述的。
浮点数的输出:
- 通常cout会删除小数位上结尾的零
- 可使用cout.setf(ios_base::fixed)格式化输出,可以覆盖上述行为
const int num=100;
int main(void)
{
using namespace std;
float n=1.0000;
cout<<n;
cout.setf(ios_base::fixed);
cout<<n<<endl;
return 0;
}
C++算术运算符需注意 %的操作数只能是整数
运算符重载简介:
C++根据上下文(这里是操作数的类型)来确定运算符的意义,使用相同的符号进行多种操作叫做运算符重载。
例如:
const int num=100;
int main(void)
{
using namespace std;
cout<<3/2<<endl;
cout<<3.0/2.0<<endl;
cout<<3.0f/2.0f<<endl;
cout<<3L/2L<<endl;
return 0;
}
整型提升:
c++将bool、char、unsigned char、unsigned short、short转换为int,具体的说说,true被转换为1,false被转换为0,这些转换都被称为整形转换。
如果有一个操作数类型是long double,则另一个操作数转换为long double
否则如果有一个操作数类型是double,则另一个操作数转换为double
否则如果有一个操作数类型是float,则另一个操作数转换为float
否则说明操作数都是整型,实行整型提升
在这种情况下,如果有两个操作数都是有符号的或无符号的,其中一个操作数的级别比另一个低,则转换为级别高的类型
否则如果有一个操作数为有符号的,且无符号操作数的级别比有符号的高,则将有符号操作数转换为无符号操作数所属的类型
否则如果有符号类型可以表示无符号类型的说有可能数值,则无符号操作数转换为有符号操作数所属的类型
否则将两个操作数都转换为有符号类型的无符号版本
强制类型转换
(type) name
type (name)
c++还引入了4个强制类型转换运算符
其中static_cast<>可用于将数值类型转换为另一种数值类型
格式:
static_cast name
C++中的auto声明
在初始化声明中,如果使用关键字auto而不指定变量的类型,编译器会将把变量的类型设置成与初始值相同:
const int num=100;
int main(void)
{
using namespace std;
auto n=100;//n是整数
auto m='s'//s是字符
return 0;
}