美文网首页
C++数据类型与字符编码_190427

C++数据类型与字符编码_190427

作者: Ell1ot | 来源:发表于2019-04-27 22:53 被阅读0次
数据类型

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函数时需要注意数据的编码与存储方式。

相关文章

网友评论

      本文标题:C++数据类型与字符编码_190427

      本文链接:https://www.haomeiwen.com/subject/zezhnqtx.html