第二章   变量和变量类型

1. C++ 算数类型

bool                     布尔 最小尺寸未定义

char                     字符 8位

wchar_t               宽字符 16位

char16_t             Unicode 字符 16位

char32_t             Unicode 字符  32位

short                   短整型  16位

int                       整型    16位

long                    长整型  32位

long long            长整型  64位

float                    单精度浮点型 6位有效数字

double                双精度浮点型 10位有效数字

long double         扩展精度浮点数 10位有效数字

如何选择类型

  • 明知数值不可能为负的时候,选用无符号类型。unsigned
  • 使用 int 执行整数运算。在实际应用中,short 常常太小而long一般和int有一样的尺寸。如果数值超过了int的表示范围,选用long long。
  • 在算数表达式中不要使用char 和bool,只有在存放字符或布尔值的时候才能使用它们。因为char在一些机器上是有符号的,而在另一些机器上又是无符号的。
  • 浮点数运算选用double。
 
2. 类型转换
 
  • 当我们把一个非布尔类型的算数值赋给布尔类型时,初始值为0则结果位false,否则结果为true。
  • 当我们把一个布尔值赋给非布尔类型时,初始值为false则结果为0,初始值为true 则结果为1.
  • 浮点数赋给整数类型时,进行近似处理。结果值仅保留浮点数中小数点之前的部分。不会四舍五入。
  • 把整数赋给浮点类型时,小数部分记为0。如果整数所占空间超过浮点类型的容量,精度可能损失。
尽管我们不会故意给无符号的对象赋值一个负值,却可能写出这样的代码。例如,当一个算数表达式中既有无符号的数又有int值时,那个int 值就会转换成无符号的数,把int
转换成无符号的过程和把int 直接赋值给无符号变量一样。
       例如
unsigned u =10;
int i= -42;
std::cout<<i+i<<std::endl;
std::cout<<u+i<<std::endl;       int占32位,输出4294967264
第一个表达式,两个数相加得到了期望值;在第二个表达式,相加前,先把整数-42转换成无符号的数。把负数转换成无符号数相当于直接给无符号数赋值一个负值,结果等于这个负数加上无符号数的模。
 
转义序列
 
换行符             \n
纵向制表符     \v
反斜线            \\
回车符            \r
横向制表符     \t
退格符            \b
问号                \?
进纸符            \f
报警符            \a
双引号               \"
单引号             \'
 
               
 
 

2017.11.10 重读C++ Primer的更多相关文章

  1. 2017.11.10 MPLAB IPE + ICD-3+ PIC32MM

    A trouble with ICD-3  programmer. MCU:  PIC32MM sw:  MPLAB IPE tool:  ICD-3 1 product introduction a ...

  2. 2017.11.10 web中URL和URI的区别

    URI:Uniform Resource Identifier,统一资源标识符: •URL:Uniform Resource Locator,统一资源定位符: •URN:Uniform Resourc ...

  3. 微信iphone7、 ios10播放视频解决方案 2016.11.10

    2016.11.10日更新以下方法 微信最新出同层播放规范 即使是官方的也无法解决所有android手机的问题. 另外iphone 5 .5s 某些手机始终会弹出播放,请继续采用 “以下是老的解决办法 ...

  4. Xamarin 2017.11.9更新

     Xamarin 2017.11.9更新 本次更新主要针对Xamarin.iOS,适配了iOS 11.1和Xcode 9.1.Visual Studio 2017升级到15.4.3获得新功能.Visu ...

  5. Xamarin 2017.11.1更新

     Xamarin 2017.11.1更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4.2获得新功能.Visual Studio 2015需要工具-选项-Xamar ...

  6. 2017/11/6 Leetcode 日记

    2017/11/6 Leetcode 日记 344. Reverse String Write a function that takes a string as input and returns ...

  7. [BZOJ5109][LOJ #6252][P4061][CodePlus 2017 11月赛]大吉大利,今晚吃鸡!(最短路+拓扑排序+传递闭包+map+bitset(hash+压位))

    5109: [CodePlus 2017]大吉大利,晚上吃鸡! Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 107  Solved: 57[Sub ...

  8. loj #6250. 「CodePlus 2017 11 月赛」找爸爸

    #6250. 「CodePlus 2017 11 月赛」找爸爸 题目描述 小 A 最近一直在找自己的爸爸,用什么办法呢,就是 DNA 比对. 小 A 有一套自己的 DNA 序列比较方法,其最终目标是最 ...

  9. ubuntu 11.10 安装apache2 tomcat6

    ubuntu 11.10 安装apache2 tomcat6 导读 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目 ...

随机推荐

  1. apache2.4 文件浏览服务器页面配置

    footer <style> table{ border:1px solid #ccc; border-radius:6px; border-collapse:collapse; box- ...

  2. TCP相关面试题(转)

    1.TCP三次握手过程 wireshark抓包为:(wireshark会将seq序号和ACK自动显示为相对值)       1)主机A发送标志syn=1,随机产生seq =1234567的数据包到服务 ...

  3. mysql 游标 demo

    一.MySQL游标的概念 1.游标介绍 MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解. 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想 ...

  4. Writing custom protocol for nanomsg

    http://vitiy.info/writing-custom-protocol-for-nanomsg/ nanomsg is next version of ZeroMQ lib, provid ...

  5. linux系统下Nagios+rrdtool+Pnp4nagios监控环境的搭建

    环境中的软件版本>>>>>>>>>>>>>>>>>>nagios版本:3.5.1rrdtoo ...

  6. python装饰器语法

    @就是decorator,早Python的高效开发中会用到,当然和java的annotation有一定的相似,但又不完全相同,看这篇文章:https://blog.csdn.net/zkp_987/a ...

  7. N - Asteroids

    Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N g ...

  8. laravel+阿里大于实现发送验证码短信

    一.短信服务使用阿里大于提供的短信接口 阿里大于官方网站上的接入流程: 在阿里大于申请接口后,需要做以下操作: 申请签名 申请短信模板 创建Accesskey,可以通过权限最大的Accesskey创建 ...

  9. 关于vue-cli创建项目(小白)(2)mock数据

    mock数据,好处,前后端分离,不用等后端的真实接口,就可以用axios(ek sju s 好像这么读,原谅本人总是根据读音写单词)请求数据了. 一,安装所需插件 根据不同需求选择安装环境,mockj ...

  10. Node.js的进程管理

    众所周知Node基于V8,而在V8中JavaScript是单线程运行的,这里的单线程不是指Node启动的时候就只有一个线程,而是说运行JavaScript代码是在单线程上,Node还有其他线程,比如进 ...