1、变量
C++中可以申请设置变量,然后在某些地方使用它。申请变量时最好赋初值,否则这些未初始化的变量通常会被赋予一个半随机值,这个值取决于当时内存中的内容,这个也是许多bug的来源。
下面是常见的C++变量的类型:
int /signed 正整数或者负整数
short 短整型整数,通常是两个字节
long 长整型整数,通常是四个字节
long long 超长整型整数,长度不会低于长整型变量,通常是八个字节
unsigned 无符号整数
unsigned short 无符号短整型整数
unsigned long 无符号长整型整数
unsigned long long 无符号超长整型整数
float 浮点型数字
double 双精度浮点数,精度不会低于float
long double 长双精度浮点数,精度不会低于double
char 单个字符
char16_t 单个16位字符
char32_t 单个32位字符
wchar_t 单个宽字符大小取决于编译器
bool true或者false
C++没有提供基本的字符串类型,但是作为标准库的一部分提供了字符串的标准实现。
不得不提变量之间的类型转换:
共有三种方法:
float myFloat = 3.1415926f;
int i1 = (int) myFloat;//方法一
int i2 = int (myFloat); //方法二
int i3 = static_cast<int>(myFloat); //方法三
2. 运算符
&将一个变量的原始位和另一个变量执行按位“与”运算
| 按位或运算
<<、>>、<<=、>>= 对一个变量的原始位执行移位运算,每一位左移或者右移指定的位数
^ 执行两个变量之间的按位异或运算
使用多种运算符进行运算时,最好带上(),除非你记得符号的优先级。
3. 类型
3.1 枚举类型
enum Ball {baseketball,soccer,tennis,pingpong};
其中默认情况下baseketball=0,soccer=1,tennis=2,pingpong=3;
但是enum Ball {baseketball=1,soccer,tennis=10,pingpong};
此时baseketball=1,soccer=2,tennis=10,pingpong=11;
即编译器会将上一个枚举成员的值递增 1,再赋值给当前的枚举成员。
需要注意的是:如果试图对枚举类型的成员例如soccer,执行算数运算或者将其作为整数对待,编译器会给出警告或者错误信息。
3.2 强类型枚举
一般枚举类型总是被解释为整数数据,因此可以在不同的枚举类型中选取不同的值进行比较。
enum class能够解决这些问题。
enum class Ball
{
baseketball,
soccer,
tennis,
pingpong
}
如果要执行Ball::soccer==0这样的代码,就是不合法的
默认情况下,枚举值的基本类型是整型,但是可以采用以下方式加以改变:
enum class Ball:unsigned long
{
baseketball,
soccer,
tennis,
pingpong
}
3.3 结构
结构struct允许将一个或者多个已有类型封装到一个新的类型中。例如:
struct student
{
char firstname;
char lastname;
long studentnumber;
}
和struct相似的是union,不过union同时只能代表其中一个类型:
union student
{
char lastname;
char firstname;
int IDnumber;
}
union只能表示lastname或者firstname或者IDnumber,不能三者同时表示,建立union对象的时候也只能依照union类型中所包含的最大的那个类型(例如lastname)所占内存大小来申请内存。