C++ Primer : 第二章:变量和基本类型(1)
变量和基本类型之第一篇:基本内置类型和变量
一、
(1)
C++定义了一套包括算数类型和空类型,这些类型有:布尔类型bool,字符类型char,宽字符类型wchar_t,Unicode字符char16_t,Unicode字符char32_t,短整型short(int),
整形int,长整形long(int),长整形long long(int),单精度浮点型float,双精度浮点型double,扩展精度浮点数long double。
其中,wchar_t、char16_t、char32_t用于扩展字符集。wchar_t确保可以存放机器最大扩展字符集中的任意一个字符,类型char16_t和char32_t则为Unicode字符集服务(Unicode是用于表示所有自然语言中字符的标准)。
对于整形,C++语言规定:一个int至少应该和short int一样大,一个long应该至少和int一样大(在32位的机器上两者通常是一样大的),一个long long int至少和一个long一样大(long long int 是在C++ 11中新定义的)。
内置类型的机器实现:
计算机以比特序列存储数据,每个比特非0即1。大多数计算机以2的整数次幂个比特作为块来处理内存,可寻址的最小内存块称为"字节(byte)",存储的基本单元称为"字(word)",通常有几个字节组成。C++中,一个字要至少能容纳机器基本字符集中的字符。大多数机器的字节由8个比特组成,字则由4个字节或8个字节组成。计算机将内存中的每个字节与一个数字(地址)关联起来。
浮点型可表示单精度、双精度和扩展精度值,C++标准定义了一个浮点数的有效位数的最小值。通常,float以1个字节(32byte)来表示,double以两个字来表示,long double以3个或4个字来表示。float和double分别有7个和16个有效位。
(2)类型转换
把其他类型的值转换为bool值的时候,当值为0时bool为false,当值不为0时bool等于true;把一个bool值转换为整型时,true被翻译为1,false被翻译为0;把浮点数赋值给整形时,仅保留小数点之前的值;把一个整型值赋值给浮点型时,小数部分记0;当给一个无符号类型赋值一个超出它表示的类型时,结果是初始值对无符号类型表示数值总数取模后的余数。例如,unsigned char可以表示0~255区间的值,如果把-1赋值给一个unsigned char类型变量,则实际的结果时该值对256取模后的余数,为255。
例如:
unsigned u = 10;
int i = 42; // 输出84
std::cout << i + i << std::endl; // 如果int占32位,输出4294968264
std::cout << u + i << std::endl;
在第一个输出表达式里,两个负整数类型一样,相加得到了期望的结果,而第二个表达式在相加前,先把整型-42转换为无符号数,把负数转换成无符号数结果等于这个负数加上这个无符号数的模。
另外,当从无符号数中减去一个值时,不管这个值是不是无符号数,我们都必须保证结果是一个无符号数。
二、字面值常量
每个字面值常量都对应了一种数据类型。
这三个数分别用十进制、八进制和十六进制来表示了整型字面值常量20:
20 /* 十进制 */ 024 /* 八进制 */ 0x14 /* 十六进制 */
对于浮点型字面值常量,默认为double型。
'a'
/* 字符字面值 */
"a"
/* 字符串字面值 */
字符串字面值的类型实际上是由常量字符构成的数组,字符串由'\0'结尾,因此数组的长度也要至少比字符串字面值的长度大1。
std::cout << "hello world"
"I love you"
<< std::endl;
另外,字符串字面值可以分多行书写,如果两个字符串字面值位置紧邻且仅有空格、缩进和换行符分隔,则它们实际上是一个整体。
我们还可以指定字面值类型,比如:L‘a’ /* 宽字符字面值 */
三、变量
C++在定义变量时赋值叫初始化,在定义之后再赋值才算真正的赋值,所以赋值和初始化并不一样。初始化的含义是创建变量是赋予其一个初始值,而赋值的含义是把对象的当前的值擦除,用一个新值来替代。
C++初始化方式:
inthello
=0;
inthello
={0};
int hello(0);
int hello{0};
最后一种是C++11的新标准,列表初始化。
默认初始化:
定义在函数内部、块内部的内置变量,不予以默认初始化,定义在全局中的变量被默认初始化为0。
变量可以声明多次,但只能被定义一次。
extern int i; // 声明i而非定义i
int j;// 声明j并定义j
通常,我们在第一次使用变量的地方再定义它是一种比较好的选择。
C++ Primer : 第二章:变量和基本类型(1)的更多相关文章
- <<C++ Primer>> 第二章 变量和基本类型 术语表
术语表 第 2 章 变量和基本类型 地址(address): 是一个数字,根据它可以找到内存中的一个字节 别名生命(alias declaration): 为另一种类型定义一个同义词:使用 &q ...
- C++ Primer 笔记(2)第二章 变量与基本类型
第二章 变量与基本类型 1.基本内置类型包括算术类型和空类型,算术类型分为两类:整型(包括字符和布尔类型)和浮点型: 2.布尔类型(bool)的取值是真(true)或者假(false): 3.字面值常 ...
- 《C++ Primer》读书笔记—第二章 变量和基本类型
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...
- C++ Primer 读书笔记 第2章 变量和基本类型
C++ Primer 第二章 变量和基本类型 2.1 基本内置类型 C++定义了一组表示整数.浮点数.单个字符和布尔值的算术类型(arithmetic type),此外还定义了Void类型. 算术类型 ...
- C++ Primer 第2章 变量和基本类型
C++ Primer 第2章 变量和基本类型 C Primer 第2章 变量和基本类型 1 基本内置类型 算数类型 类型转换 字面值常量 2 变量 变量定义 3 复合类型 引用d左引用 指针d 4 c ...
- C++PRIMER第二章前半部分答案
C++PRIMER第二章前半部分答案 哈哈哈,为什么是前半部分呢,后半部分还在学习中,重新系统性的学习c++,共同进步嘛,不多说,跟我一起来看看吧,第三章开始才是新手收割的时候,慢慢来~~ 2.1&a ...
- Java 第二章 变量
第二章 变量 变量称为:是计算机语言中能储存计算机结果或能表示值抽象概念 .变量可以通过变量名访问 int money ; //变量 money=1000; //赋值 int money=1000: ...
- Java 第二章 变量、数据类型和运算符
第二章 变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...
- C++primer第二章
第二章 :变量和基本类型 2.1 基本内置类型 C++定义了一套包含算术类型(arithmetic type)和空类型(void)在内的基本数据类型 2.1.1 算术类型 算术类型的分类: 整型(in ...
随机推荐
- Diskpart使用说明
[查看硬盘信息] 1.打开命令窗口 cmd 2.diskpart 命令进入Diskpart管理程式 3.list disk 查看硬盘信息 list partition 查看分区信息 [初使化硬盘] ...
- Windows Azure 实操 —— 迁移本地SharePoint服务器到Azure
博客地址 http://blog.csdn.net/foxdave 注意:如果你是第二代虚拟机,那就别看这个了,老老实实在Azure上重新创建吧,Azure不支持第二代虚拟机. 写在之前,对Azure ...
- winform错误提示 :窗口类名无效(Window class name is not valid)
winfrom 程序在 xp 操作系统上报错提示 窗口类名无效(Window class name is not valid) 解决方法 注释 Program类 里 这句 Application.En ...
- lib静态链接库,dll动态链接库,h文件
最近在弄摄像头,发现我在调用摄像头自带的函数的时候,库没连接上,于是经过高人指点,学习了一下lib静态链接库,dll动态链接库来补充一下自己的基础知识. 一.首先我们来介绍一下lib静态链接库. li ...
- poj1651 区间dp
//Accepted 200 KB 0 ms //dp区间 //dp[i][j]=min(dp[i][k]+dp[k][j]+a[i]*a[k]*a[j]) i<k<j #include ...
- oracle中的cluster表
大家对通常oracle中的cluster的理解是不准确的,经常和sql server中的cluster index混淆.Cluster是存储一组table的一种方法,这些table共享同一数据块中的某 ...
- 新浪微博sdk bug
最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理 ...
- php大力力 [032节] php设计时候遇见麻烦:XQB50-H8268 进水电磁阀
海信洗衣机 无法进水,刚才写程序,洗衣机不进水,在叫唤,去看了看,上网查了查,估计是进水电磁阀坏了. 打算自己拆了查出型号,淘宝买,自己修. 想起以前洗衣机坏了,找人修,对方报价好几百,淘宝看洗衣机主 ...
- BZOJ 3687 简单题
bitset维护某个和是否存在. bit<<x:所有子集的和+x. #include<iostream> #include<cstdio> #include< ...
- Error Handling and Exception
The default error handling in PHP is very simple.An error message with filename, line number and a m ...