变量名:
以两个下划线打头或以下划线和大写字母打头的名称被保留给实现使用;以一个下划线开头的名称被保留给实现,用作全局标识符。
整型:
C++的基本整型有十种,其中无符号跟有符号各五种:
char | 至少8位 |
short | 至少16位 |
int | 至少跟short一样长 |
long | 至少32位,至少跟int一样长 |
long long | 至少64位,至少跟long一样长 |
wchar_t用于表示扩展字符集,是一种整型,有足够空间表示系统使用的最大扩展字符集。iostream中的cin和cout不适合用来处理wchar_t,而是使用wcin和wcout来处理wchar_t。可加上前缀L表示宽字符常量和宽字符串。如:wchar_t bob = L'p'; wcout<<L"tall"<<endl;
C++11新增了char16_t和char32_t。使用前缀u表示char16_t的字符常量和字符串常量;使用前缀U表示char32_t的字符常量和字符串常量;使用前缀R来标识原始字符串,使用R"+*(标识开头就需要使用)+*"标识结尾,使用R"--*(标识开头就需要使用)--*"标识结尾,
sizeof()函数可以返回变量的长度,如sizeof(num)或sizeof num,其中括号是可选的。
C++新增一种赋值方式,如:
int num(100) //声明变量num,并赋值为100
C++11新增大括号的初始化(列表初始化),用于给复杂数据类型提供值列表,列表初始化不允许缩窄:
int age={} //声明变量age,并赋值为0
int age1={2} //声明变量age1,并赋值为2
int age2 {2} //声明变量age2,并赋值为2
整型字面值:
C++中,如果数字以1-9开头,则基数为10;第一位为0,第二位为1-7,则基数为8;前两位是0x或0X则基数为16;而cout默认以十进制显示整数。
#include<iostream>
int main(){
std::cout<<std::hex<<num<<std::endl; //表示以后使用16进制输出值
std::cout<<std::dec<<num<<std::endl; //表示以后使用10进制输出值
std::cout<<std::oct<<num<<std::endl; //表示以后使用8进制输出值
}
如何确定整数类型,默认优先级为整型int、long、long long, 当后缀为l或L时表示long常量;u或U表示unsigned int常量,ul表示unsigned long常量;C++额外增加了ll或LL表示long long常量;ull、uLL、Ull或ULL表示unsigned long long常量。对于这些后缀不区分大小写。
int age1={2} //声明变量age1,并赋值
wchar_t 是一种整数类型,可以表示系统使用的最大扩展字符集;wchar_t流无法使用cin、cout进行输入、输出,需要通过iostream中另外两个对象wcin、wcout进行输入、输出。可以通过前缀L来表示宽字符常量和宽字符串。如wcout<<L"tall"<<endl;
C++11新增char16_t和char32_t,前者使无符号、后者是有符号的,使用前缀u表示char16_t,使用U表示char32_t。C++11支持Unicode字符编码方案UTF-8,使用前缀u8表示这种类型的字符串字面量。
C++11使用前缀R表示原始字符串,原始字符串中可以使用转义字符时不用转义。也可以使用R"abcd(前缀标识原始字符串,但是结尾需要)dcba"。
浮点数:
计算机将浮点数分两部分存储在计算机中,一部分表示值,一部分表示对值进行放大或缩小。
C++存在三种浮点类型:float、double、long double。浮点常量默认情况下使用double。
3.1 浮点数优缺点:
1、可以表示整型之间的值;2、可以表示的范围大得多;3、浮点运算的速度通常比整数运算慢,且精度将降低。
C++算术运算符:
+、-、*、/、%、+=、-=、*=、/=
C++类型转换:
整型提升:bool、char、unsigned char、signed char和short值转换为int,这种转换被称为整型提升。
表达式中的转换:长度低于int或unsigned int的整型,在进行运算时,会先转换为int或unsigned int的整型进行运算,之后再根据情况转换为别的类型。如:short a=4;short b = 3; short c = a+b;会先将a和b转换为int进行运算,最后再将结果转换为short存储在变量c中。同理wchar_t被提升为下列类型中第一个宽度足够存储wchar_t取值范围的类型:int、unsigned int、long或unsigned long。
表达式中类型的转换优先级为:
long double > double > float > 整型
整型中:都是有符号或无符号,则((unsigned)long long > (unsigned)long > (unsigned)int > (unsigned)short > (unsigned)char > bool)> (有符号>无符号)
1、为什么C++有多种整型?
C++的整型主要分为short、int、long、long long的有符号和无符号8中类型。其中有符号可以表示负数,而无符号不能表示负数,且各个类型能表示的整数范围不同。
2、C++提供什么措施来防止超出整型的范围?
C++没有提供自动防止超出整数类型范围的功能,需要程序员预先估计数据大小与哪种数据类型匹配。