1 变量命名规则
1 名称中只能它包含字母、数字或者下划线
2 名称的第一个字符不能是数字
3 区分字符的大小写
4 不能将C++本身的关键字作为自定义变量名
2 位与字节
计算机的基本内存单元是位(bit),用二进制数字1和0表示。字节(byte)通常指8位的内存单元。字节也就是描述计算机内存量的度量单位,1Kb=1024字节,1MB=1024Kb。但是C++对于字节的定义与此不同。C++字节由至少能够容纳实现的基本字符集的相邻位组成,也就是说,可能取值的数目必须等于或超过字符数目。
int n_int = INT_MAX;
short n_short = SHRT_MAX;
long n_long = LONG_MAX;
long long n_llong = LLONG_MAX;
// sizeof operator yields size of type or of variable
cout << "int is " << sizeof(int) << " bytes." << endl;
cout << "short is " << sizeof(n_short) << " bytes." << endl;
cout << "long is " << sizeof(n_long) << " bytes." << endl;
cout << "long long is " << sizeof(n_llong) << " bytes." << endl;
cout << "Maximum values: " << endl;
cout << " int: " << n_int << endl;
cout << " short: " << n_short << endl;
cout << " long: " << n_long << endl;
cout << "long long: " << n_llong << endl;
上述代码块的输出为:
int is 4 bytes.
short is 2 bytes.
long is 4 bytes.
long long is 8 bytes.
Maximum values:
int: 2147483647
short: 32767
long: 2147483647
long long: 9223372036854775807
3 整型溢出
4 char类型
char来行也是一种整型,它是专门为存储字符(如字母和数字)而设计的。通常我们用char类型来处理字符,但是有时候我们也可以用它作为比short更小的整数。
char ch = 'M';
int n_ch = ch;
cout << "The ASCII code for " << ch << " is " << n_ch << endl;
cout << "Add one to the character code:" << endl;
ch = ch + 1;
n_ch = ch;
cout << "Now, the ASCII code for " << ch << " is " << n_ch << endl;
cout << "Minus 5 from the chractor ch:" << endl;
ch = ch - 5;
n_ch = ch;
cout << "Now, the ASCII code for " << ch << " is " << n_ch << endl;
上述代码块的输出结果为:
The ASCII code for M is 77
Add one to the character code:
Now, the ASCII code for N is 78
Minus 5 from the chractor ch:
Now, the ASCII code for I is 73
5 浮点数
浮点数,顾名思义,可以表示带小数部分的数字。
第一种表示法为标准的小鼠表示法,例如6.66,13.14,0.0001。
第二种表示法为科学记数法,例如 2.33e+4, -1.23e-6,一般我们用科学记数法表示很大或者很小的数。
浮点数可以表示整数之间的数值,而且因为缩放因子的存在,他们表示的范围数大得多。但是,浮点数的运算速度通常会比整型数慢,而且会存在精度降低的问题。
float a = 2.34E+12f;
float b = a + 1.0f;
std::cout << "a = " << a << std::endl;
std::cout << "b -a = " << b-a << std::endl;
上述代码的输出为:
a = 2.34e+12
b -a = 0
本来(b-a)应该等于一,但是实际输出结果为零。问题在于2.34E+12是一个小数点左边有13的数字,加上一,就是第十三位加上一。然而float类型只能表示数字中的前六位或者前七位。因此修改第十三位的数值并不会对这个值有任何影响。
6 C++算术运算符
五种基本的C++算术运算符:
‘+’ 加法运算符,执行加法运算。
‘-’ 减法运算符。
‘*’ 乘法运算符
‘/’除法运算符,用第一个数除以第二个数。
‘%’ 求模运算符,生成第一个数除以第二个数后的余数。需要注意的是两个操作数都必须是整数,是浮点数就会报错。
运算符的优先级问题,不再赘述。
7 类型转换
C++丰富的类型允许根据需求选择不同的类型,当不同的数值类型参与运算时,C++为了避免混乱,会进行以下三种自动类型转换。
1 将一个算术类型的值赋值给另一个算术类型的值。
2 表达式包含不同的类型时
3 将参数传递给函数时
当C++进行自动类型转换时,存在一些潜在的问题,比如将较大精度的浮点数类型转换为精度较低的浮点数类型,这会导致精度下降。又或者将浮点数转换为整型数,这将使得小数部分消失。又或者将较大的整型数转换为较小的整型数时,原来的数值可能超过目标类型数的取值范围。
除了C++自动类型转换外。C++还允许用户进行强制类型转换。通用化格式为 typename(value)。强制类型转换不会修改原变量本身,而是创建一个新的,制定类型的值。