数据类型
bool(1byte),char(1),wchar_t(2,一个宽字符)
int(4),short int(2),long int(8)
float(4),double(8),long double(16)
size_t(8,储存值为整数,用于记录一个数据的长度),string(24)
可以根据字节数判断取值范围。
前缀有:signed,unsigned(有无符号),short,long
枚举类型(enumeration)
变量可能有多重可能的值时,使用枚举进行定义,格式与结构体相似,可在main函数外定义:
enum 枚举名{
标识符(=整型常数),
标识符(=整型常数),
...}枚举变量;
#include<iostream>
using namespace std;
int main()
{
enum numbers{a,b=2,c}num;
num = a; cout << a ;//默认为0
num = b; cout << b ;//赋值为2
num = c; cout << c ;//默认比前一个赋值大1
/*输出结果:023*/
}
运算规则
1.不同精度变量间运算,系统首先将低精度变量转换,使之与其他变量精度相同,再进行运算。
2.将高精度数值赋值给低精度变量,多出的部分将被舍弃。
3.注意运算顺序与变量是否超出取值范围:
#include <stdio.h>
int main()
{
int a, b, c, x, y;
a = 111111;
b = 111111;
c = 111111;
x = a * b / c;
y = a / c * b;
printf("%d\n%d", x, y);
/*输出结果:
-4853
111111*/
}
先进行乘法运算可能导致数据超出该类型的取值,导致无法得到正确答案。
字符编码
ASCII编码中只存在127个字符,只占用一个字节,其中:字符0-9对应的十进制值为48-57;
A-Z(65-90);a-z(97-122)。
Unicode编码可包含所有字符,占用两个字节,其中汉字字符每个字节的最高位为1,因此在使用整型读取汉字字符时,结果为两个负值。
utf-8是Unicode的使用标准之一,长度不固定,与Unicode转换方式如下:
微信截图_20190427224705.png
hdu_2030题目涉及到字符编码问题,当时使用数组和gets()函数输入字符串,使汉字占用两个字节并进行判断。在之后学习c++的string函数时需要注意数据的编码与存储方式。
网友评论