C++变量和基本类型笔记
来源:互联网 发布:语音网络 编辑:程序博客网 时间:2024/06/05 03:43
1、基本类型
含有无符号类型的表达式
会把有符号的类型转换成无符号的类型
int i= -42unsigned u = 10;cout<< u+i<<endl;//如果int占32位,会输出4294967264
所以切勿混用无符号类型和带符号类型
2、字面值常量(literal)
每个字面值常量都对应一种数据类型
整型:
十进制字面值具体的由它的值和符号决定。
默认情况下十进制的字面值是带符号数,八进制和十六进制字面值既可能是带符号的也可能是无符号的。
十进制字面值的类型是int, long, long long 中尺寸最小的(在能容纳下当前值的前提下)。十进制字面值是整数,带符号的只是对字面值取负值。
八进制和十六进制字面值的类型是int, unsigned int, long, unsigned long, long long, unsigned long long 中尺寸最小的。
字符和字符串字面值:
字符:单引号
字符串:双引号
cout<< "hahahaha" //注意这里,一行写不下可以换行哦! "hehehe" <<endl
布尔字面值和指针字面值:
true和false是布尔类型的字面值
nullptr是指针的字面值。
3、变量
变量定义
初始化
初始化与赋值是完全不同的操作
初始化是赋予初始值,赋值是擦除当前值,用新值代替。
int units_sold = 0;int units_sold = {0};int units_sold{0};int units_sold(0);//上述四条都是正确的初始化方法
默认初始化
每个类各自决定自己初始化对象的方式。而且是否允许不经初始化而定义对象也是有类自己决定。
变量声明和定义的关系
声明:使得名字为程序所知,extern int i;//声明而非定义
定义:负责创建与名字关联的实体。int j;//声明并定义
声明规定了变量的类型和名字,定义不仅规定了类型和名字,还为变量申请了存储空间,也可能会为变量赋一个初值。
变量能且只能被定义一次,但可以多次声明
变量命名规范:
- 标识符能体现实际含义
- 变量名一般用小写字母
- 用户自定义的类一般以大写字母开头
- 标识符由多个单词组成,单词间应有明显区分。
名字的作用域:
c++大多以花括号分隔
建议第一次使用变量时再定义
嵌套的作用域
内层作用域可以从新定义外层作用域的变量。
int num = 10;int main{ cout<< num<<endl;//10 int num = 20; cout<<num<<endl;//20 cout<<::num<<endl;//10,::左边为空,向全局作用域获取变量。}
复合类型(compound type)是指基于其他类型定义的类型。
引用和指针
定义引用:&
int ival= 1024;int &refval = ivalint &refval;//报错,引用必须初始化
引用即别名
指针(pointer):指向另外一种类型的复合类型。
指针与引用的不同:
- 指针本身就是一个对象,允许对指针赋值和拷贝,可以先后指向不同的对象。
- 指针无需在定义时赋初值。
定义指针:*
解引用操作:*//解引用只适用于那些确实指向了某个对象的有效指针。
对符号的理解:
声明时,紧随类型符出现的是声明的一部分,在表达式中使用时看作运算符。
空指针
nullptr,0,NULL //NULL是一个预处理变量,在头文件cstdlib中,值为0.
@把int变量直接赋值给指针是错误的操作,即使变量为0
int zero = 0;int *pi = zero; //这样也不行
@建议初始化所有指针
void* 指针
可以存放任意对象的指针。对存放的地址的类型不了解。
int* p1,p2;//近作用域p1int *p1;
指向指针的指针,指针是对象,可以再次被指针指向
指向指针的引用,引用不是对象,但可以指向指针
const限定符
一旦创建不能修改,因此必须初始化。
多个文件中共享const变量:
extern const int bufSize = 512;
const的引用
指针和const
const double pi = 3.14;double *ptr = π //错误const double *ptr = π//正确,指针的类型必须与所指的对象的类型一致,例外,允许一个指向常量的指针指向非常量对象。
顶层const:指针本身是常量
底层const:指针所指的对象是常量
constexpr和常量表达式
字面类型(literal type)
算数类型、引用类型和指针都属于字面类型,自定义类Sales_item、IO库、string类型不属于,不能被定义成constexpr。
- C++Primer笔记--变量和基本类型
- C++:基本类型和变量
- c++primer 学习笔记(2.0)变量和基本类型
- C++Primer笔记 第二章 变量和基本类型
- c++primer学习笔记1 - 变量和基本类型
- C++Primer第二章(变量和基本类型)笔记
- C++Primer学习笔记之变量和基本类型
- 《c++primer》笔记 第2章 变量和基本类型
- c++Primer笔记1(快速入门、变量和基本类型、标准库类型)
- C++Primer 变量和基本类型
- c++Primer,二,变量和基本类型
- c++primer 要点-变量和基本类型
- 2.变量和基本类型(c++)
- 2.c++变量和基本类型笔记
- C++变量和基本类型笔记
- 【C++笔记】变量和基本类型
- C++Primer学习笔记第二章(2/18) 变量和基本类型
- c++Primer学习笔记之五:变量和基本类型_1
- 阻塞 与 非阻塞
- lingo解线性的缺陷
- Cell的自定义高度 图片 文本
- atoi以及itoa实现
- java.net.SocketTimeoutException: failed to connect to /192.168.56.1 (port 8080) after 5000ms
- C++变量和基本类型笔记
- 【MySql】使用记录<六>
- 双系统Window+Linux,卸载Linux
- 二分查找(非递归实现和递归实现)
- 深入集合框架之Hashtable源码剖析
- 微软的Chart控件的用法-折线图
- 编译原理——词法分析器
- hdu 5371 Hotaru's problem(manachar)
- SonarQube代码质量管理平台安装与使用