您的位置:首页 > 编程语言 > C语言/C++

C++变量和基本类型笔记

2015-08-12 22:48 260 查看
1、基本类型

含有无符号类型的表达式

会把有符号的类型转换成无符号的类型

int i= -42
unsigned 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 = ival
int &refval;//报错,引用必须初始化


引用即别名

指针(pointer):指向另外一种类型的复合类型。

指针与引用的不同:

指针本身就是一个对象,允许对指针赋值和拷贝,可以先后指向不同的对象。

指针无需在定义时赋初值。

定义指针:*

解引用操作:*
//解引用只适用于那些确实指向了某个对象的有效指针。


对符号的理解:

声明时,紧随类型符出现的是声明的一部分,在表达式中使用时看作运算符。

空指针

nullptr,0,NULL //NULL是一个预处理变量,在头文件cstdlib中,值为0.


@把int变量直接赋值给指针是错误的操作,即使变量为0

int zero = 0;
int *pi = zero; //这样也不行


@建议初始化所有指针

void* 指针

可以存放任意对象的指针。对存放的地址的类型不了解。

int* p1,p2;//近作用域p1
int *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++ 变量 基本类型