zoukankan      html  css  js  c++  java
  • 第7天

    C++中一个 char 的大小和一个机器字节一样。

    有其他的一些字符类型(如wchar_t, char16_t, char32_t, wchar_t)用于扩展字符集,用于确保可以存放机器最大扩展字符集中的任意一个字符,如char16_t和char32_t为Unicode字符集服务(Unicode是用于拜师所有自然语言中的字符标准)
     
    可寻址的最小内存块称为“字节(byte)”,储存的基本单元称为“字(word)”,在c++语言中,一个字节要至少能荣天娜机器基本字符集中的字符。大多数机器的字节有8比特构成,字则由32或64比特组成,也就是4或8个字节。
     
    无符号类型只能表示大于等于0的值。
     
    书上的经验——如何选择数据类型
    • 当确定数值不可能为负数时,选用无符号数
    • 算术表达式中不要用char和bool,因为类型char在一些机器上是有符号的,而在另一些机器上没有符号的,如果需要使用一个不大的整数,明确指定它的类型是signed char 和 unsigned char。
    • 执行浮点数运算时选用double,这是因为float经常精度不够而且double和float的计算代价相差无几,对某些机器来说,前者甚至比后者还要快。long double运行时的消耗不小。
    当把一个整数值赋值给浮点类型时,小数部分记为0。如果该整数占的空间超过了浮点类型的容量,精度可能会丢失。
     
    当我们赋给无符号类型一个超出它表示范围的的值时,结果是初始值对无符号类型表示数值总数取模后的数。例如:unsigned char c = -1;  //假设char占8个比特,c的值是255。
    在这里,8比特大小的unsigned char 可以表示0到255区间的值,如果我们赋一个区间以外的值,则实际的结果是该值对256取模后的所得余数。
     
    当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的(undefined)。此时,程序可能继续工作、可能崩溃、也可能生成垃圾数据。例如:signed char c2 = 256;  //假设char占8个比特,c2的值是未定义的。
     
    如果把 int 的尺寸看成一个确定不变的已知值,程序就不可移植了(nonportable)。
     
    unsigned u = 10;
    int i = -42;
    cout << i + i << endl;
    cout << u + i << endl;  //如果int占32位,输出4294967264
    在第二个输出表达式中,相加前首先要把整数-42转成无符号数
     
    两个非符号类型数相减,如果结果为负数,那么其结果也要被转为非符号数。
     
     
  • 相关阅读:
    在Ubuntu下安装Apache
    linux 安装jdk 配置tomcat
    linux命令——rmdir
    linux命令——rm
    WebApi路由解析增加版本控制
    eclipse Dynamic web module相关问题
    mysql 5.7.18 windows zip安装
    微信扫描二维码登录网站技术原理
    Maven实战(八)——常用Maven插件介绍(下)
    Maven实战(七)——常用Maven插件介绍(上)
  • 原文地址:https://www.cnblogs.com/SFTD/p/3633149.html
Copyright © 2011-2022 走看看