美文网首页
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