C++11学习笔记(2)
来源:互联网 发布:美国国父路易十六知乎 编辑:程序博客网 时间:2024/06/06 03:27
变量和基本类型1
- C++算数类型
类型转换区分:
1、把非bool型赋给bool型,初始值为0结果为false,否则结果为true。
2、把bool赋给非bool型,初始值false结果为0,为true结果为1。
3、赋给无符号类型一个超出其表示范围值时,结果是初始值对无符号类型数值总数(表示范围内数的个数)取模后的余数。如8比特的无符号可表示0~255区间内的值,如果赋予了区间外值,实际结果应该是该值对256取模后的余数。例如把-1赋给8比特的无符号类型所得结果是255。
- 对于使用if语句应注意地方
int i = 42;if(i) //if条件的值将为true i = 0;if( i == 0) //if条件为false i = 1;if( i = 1) //if条件恒为true,此处为赋值语句,不管怎样,不会出现任何警告或错误 i = 2;//为防止出现如上错误,一般将定值写前面if( 1 == i) // 如果忘写一个“=”会报错
赋值与初始化辨析:
初始化不是赋值,初始化含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦出,而以一个新值来代替。c++初始化形式:
int i = 0;int i = {0};int i(0);int i{0};
作为c++11标准的一部分,用花括号初始化形式称为列表初始化。当用于内置类型的变量时,这种初始化有一个重要特点:如果我们使用列表初始化且初始值存在丢失信息风险,编译器将报错:
long double ld = 3.141592654;int a{ld}, b = {ld}; //错误,转换未执行,因为存在丢失信息风险int c{ld}, b = ld; //正确,转换执行,且确实丢失了部分值
- 变量声明和定义
声明使得名字为程序所知,而定义负责创建与名字关联的实体。也即定义申请了存储空间,也有可能为变量赋初始值。
如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显示地初始化变量:
extern int i; //声明i而非定义int j; //声明并定义j//定义pi,任何包含了显示初始化的声明都成了定义,这样抵消了extern作用extern double pi = 3.1416;
在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。
变量只能被定义一次,但是可以被多次声明。
声明和定义区别看起来也许微不足道,但实际非常重要,如果需要在多个文件中使用同一个变量,就必须将声明和定义分离。此时,变量的定义必须出现在且只能出现在一个文件中,而其他使用该变量的文件中必须对其进行声明,却不能重复定义
- 嵌套的作用域
因为有内层作用域和外层作用域之分,但当在内部想使用外部作用域的同名变量时,该怎样用?以下用一个小程序解释区分:
#include <iostream>using namespace std;//该程序仅用于说明:函数内部不宜定义与全局变量同名的新变量int reused = 42; //reused拥有全局作用域int main(){ int unique = 0; //块作用域 //输出: 42 0 cout<<reused<<" "<<unique<<endl; int reused = 0; //新建局部变量,覆盖同名全局变量 //输出: 0 0 cout<<reused<<" "<<unique<<endl; //使用作用域操作符显示访问全局变量,输出: 42 0 cout<<::reused<<" "<<unique<<endl; return 0;}
0 0
- C 学习笔记2
- c学习笔记(2)
- C语言学习笔记 (2)
- C语言学习笔记(2)
- C程序设计语言学习笔记(2)
- C++Primer学习笔记(2)
- 学习笔记:C程序基础(2)
- iOS学习笔记2(c语言)
- 《C语言点滴》学习笔记(2)
- c++/c 学习笔记——基础(2)
- C语言学习笔记(11)
- C语言学习笔记11
- c语言学习笔记11
- c sharp学习笔记2
- C语言学习笔记(2)
- 狂人C学习笔记(2)
- C: 入门学习笔记(2)
- object-c学习笔记-2
- Android事件分发机制
- 给即将大三的自己一封信
- 缓存基础- 缓存包含哪些
- POJ 2286 The Rotation Game(IDA*)
- NYOJ 914 Yougth的最大化
- C++11学习笔记(2)
- python构建网站的几个第三方库
- iOS之模态情境
- RequestDispatcher 的使用总结
- 判断一个字符串是否是一个字符串的旋转字符串
- python实现简单神经网络算法
- 使用JAVA读写Properties属性文件
- java笔记--有关构造函数的小问题
- Android自定义样式