C++笔记(一)~基础
【摘要】 类型选择(经验准则)当确定数值为非负时,选用无符号类型一般使用int进行数值运算,如果超过int的最大值,则选用long long执行浮点数运算,选用double当一个算术表达式既有int,又有无符号数时,int会转换为无符号数示例代码#include<iostream>using namespace std;int main(){ unsigned u=10; int i=-42;...
类型选择(经验准则)
- 当确定数值为非负时,选用无符号类型
- 一般使用int进行数值运算,如果超过int的最大值,则选用long long
- 执行浮点数运算,选用double
当一个算术表达式既有int,又有无符号数时,int会转换为无符号数
示例代码
#include<iostream>
using namespace std;
int main(){
unsigned u=10;
int i=-42;
// int + int
// -42 + -42 = -84
cout<<i+i<<endl;
// unsigned + int : int 会默认转换为unsigned
// 10+ (2的32次方-42)=294967264
cout<<u+i<<endl;
}
运行结果

注:
- 在海轰电脑上,int是32位的,所以INT_MAX=2的31次方-1=2147483647,INT_MIN=-2147483648
- -42(int)=(2的32次方-42)=294967254(unsigned) 为什么呢?其实int和unsigned都是32位存储的(以海轰电脑为例),而区别就在于第一位数字,在int中是表示符号:0正1负,而在unsigned中32位都是表示数字的,没有符号位。所以int的最大值就是01111111...111(31个1),unsigned的最大值就是111....111(32个1)。
对象
对象是指一块能存储数据并具有某种类型的内存空间。
初始化与赋值的区别
- 初始化:创建变量时,赋予其一个初始值
- 赋值:把对象的当前值擦除,并以一个新的值替代
声明与定义
- 定义:负责创建与名字有关的实体
- 声明:使得名字为程序所知
区别:简单的说,定义就是创建了一个新的实体,一个实体只可以定义一次,而声明是指需要使用这个实体时,需要要让程序知道有这样一个实体(比如实体a在一个文件里面被定义了,而在另一个文件需要使用a实体,那么只需要再声明:使用extern就可以了,意思就是声明后在这个文件可以直接使用上一个文件中的实体a了,不需要再重新定义了)
注:变量能且只能被定义一次,但是可以被多次声明。
全局变量与局部变量示例
#include<iostream>
using namespace std;
int a=2;
int main(){
int b=3;
cout<<"a="<<a<<"b="<<b<<endl;// a=2 b=3
// 新建局部变量a 覆盖了全局变量a
int a=4;
cout<<"a="<<a<<"b="<<b<<endl;// a=4 b=3
//显示访问全局变量a
cout<<"a="<<::a<<"b="<<b<<endl; // a=2 b=3
}

引用
引用不是对象,只是为一个已经存在的对象起的一个别名,并且可以通过这个别名修改原来对象的值。
简单的理解: int a=1; int &ra=a; 意思:a对象的值是1,通过引用,现在ra指向的值也是1,而且通过ra也可以改变原来的值,比如现在再执行ra=2,那么原来的值就变成了2,此时a=2,ra=2.区别就在于a是对象,而ra只是引用,不是一个对象。同时一旦ra是对a的引用,那么之后就不可以变成其他对象的引用了。(类似这个别名已经被a用了,其他对象就不可以再用了)
注:引用必须被初始化
测试代码
#include<iostream>
using namespace std;
int main(){
int i;
int &ri=i;
i=5;
ri=10;
cout<<"i="<<i<<" ri="<<ri<<endl;// i=10 ri=10
}
测试结果

指针与引用的区别
- 指针本身就是一个对象,而引用不是对象。
- 指针在它的生命周期可以指向多个对象,但是引用只可以与一个对象进行绑定。
- 指针在定义时可以不用初始化,而引起定义时必须初始化。
不可以将int变量直接赋值给指针,即便这个int变量是0
#include<iostream>
using namespace std;
int main(){
int i=0;
int *p=i;//错误
int *p=1;//错误
int *p=0;/正确
}
正确做法:使用取地址符&
#include<iostream>
using namespace std;
int main(){
int i=0;
int *p=&i;
}
const对象必须初始化
#include<iostream>
using namespace std;
int main(){
const int a=0;// 正确
const int b; // 错误
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)