2 变量、运算符、位运算
发布日期:2021-06-24 06:57:07 浏览次数:4 分类:技术文章

本文共 3114 字,大约阅读时间需要 10 分钟。

数值计算

数据存储
定义变量 申请存储空间
数据输入
数值计算
数据输出

一、变量

定义变量
访问变量
变量=内存单元
定义变量
数据类型
预定义数据类型
1276762-20180628071647878-682251048.png
写入
输入 cin>>ctemp
赋值 ctemp = 36
初始化 int x=10,y;
读出
自动读取 ftemp =ctemp * 1.8 + 32;
输出 cout<<ftemp;
先定义 或访问

关键字

标识符 字母 数字 下划线组成,字母和下划线开头
语句 分号结束
常量
其值不变 数据类型 默认整形/浮点型 32 032 0x32
符号常量
运算符
分隔符

三、算数运算

+表达式
运算符、操作数、括号
表达式语句
+运算符
优先级 结合性

算术运算符

+ - * /
优先级 1-15

强制类型转换

double(3)
自定转换(隐含转换)
char--unsigned char--shootr--unsigned short -- int --unsigned -- long -- unsigned long -- float -- double
表达式结果:值+类型
括号 () 括号内的优先
其它算术运算符
取余运算符 %
自增运算符 ++
后置 变量先用再加 优先级1 结合性从左到右
前置 变量先加再用 优先级2 结合性从右到左
自减运算符
前、后

四、位运算

一个二进制位可记录某种对象的开关状态
+位反运算符~
~ 0101 0101
= 1010 1010

+位与运算符 &

有0为0,全1为1 检测是零还是一
+位或运算符 |
全0为0,有1为1 某位置1
+异或运算符 ^
相同为0,不同为1 某位反置
+左移运算符 <<
低位补零
+右移运算符 >>
无符号 高位补零
有符号 最高位补符号位

五、赋值运算

+赋值运算符 =
修改变量的数值
+泛化的运算符 = ++ --
+复合赋值运算符
+= -= *= /= &= |= ^= <<= >>= 优先级与=一样
+变量初始化
+常变量
const x=5
使用const关键字指定常变量
定义常变量时必须初始化
常变量的值不能改变,例如不能再次被赋值

六、数据的输入和输出

+控制台程序

+输入/输出流

键盘 cin 显示器 cout
+导入外部程序
#include
using namespace std;

cin>>变量1>>变量2....>>变量n;

输入时用空格或Tab隔开,回车键结束

cout<<表达式1<<表达式2....<<表达式n;

endl表示换行
执行该语句时,计算机首先从右到左顺序逐个计算表达式的结果,然后再按从左到右的顺序依次显示各表达式的结果,各显示结果之间没有间隔

七、引用与指针

+访问变量内存单位
变量名
引用
指针
+引用: 变量的别名
公用同一内存空间

定义引用变量

引用类型&引用变量名 = 被引用变量名;
引用类型是引用变量的数据类型,必须与被引用变量的类型一致:
&是引用变量说明符。定义变量语句中,变量名前加& 表示该变量为引用变量;
引用变量名需符合标识符的命名规则
被引用变量名指定被引用的变量,该变量必须是一个已经定义的变量
定义引用变量时必须初始化,即指定其是哪个变量的引用,引用变量只能因哟给一个变量,定义后不呢个再引用其他变量
举例: 定义一个int型变量x及其因哟个变量xa
int x;int &xa = x;//称xa是x的一个引用 int x,&xa = x;//可在一条定义语句中完成 int x,y,&xa = x;//一条定义变量语句可既包括普通变量,又包括引用变量
1276762-20180628215231453-1052187742.png

//键盘输入一个数值,计算其平方的值#include 
usingnamespace std;int main(){ int x; cin>>x; /* cout<
<

+指针 : 内存地址

取地址运算符"&"
&变量名
所取出的变量地址是程序执行时该变量所分配内存的地址,每次执行程序时,变量不一定会被分配在同一内存单元,这取决于本次执行时计算机中哪些内存单元是空闲的
一个变量可能占用多个字节,变量地址指的是变量所占内存单元第一个字节的地址,也称首地址
取地址运算符是单目运算符,操作数必须是变量,其优先级为2级,结合性为从右到左;
例:
cout<<x;//显示变量x内存单元中保存的数值
cout<<&x;//显示变量x的内存地址(十六进制)
+指针类型
通过地址访问某个变量x的步骤
定义1个专门保存地址的变量(假设为p),该变量称为指针变量
取出变量x的地址,将其赋值给p
通过指针变量p所保存的地址来访问变量x的内存单元
+指向类型
+指针变量
short x=10,y=20;

定义指针变量

指向类型指针变量名;
指向类型指定了指针变量能够保存哪种类型变量的地址,或者说制订了指针变量能够指向哪种类型的变量;
是指针变量说明符,定义变量语句中,变量名前加""表示该变量为指针变量;
指针变量名需符合标识符的命名规则
例:
已定义变量x和y: int x,y;
int
p;//"int "表示int型指针
//定义一个int型指针变量p,未初始化,即未指向任何变量
p=&x;//取出变量x的地址并赋值给指针变量p,则p指向变量x
int
p=&x;//定义一个int型指针变量p,初始化为指向变量x
p=&y;//区变量y的地址并赋值个指针变量p,则p修改了指向,现指向变量y

+变量的间接访问

指针运算符""
指针变量名
按照指针变量所保存的地址访问所指向的内存单元,可写入或读出数据
间接访问之前,指针变量应当指向某个已经存在的变量,即指针变量必须先赋值,再间接访问,否则将出现错误
指针运算符是单目运算符,其优先级为2级,结合性为从右到左

+注意

指针变量应当先赋值,再间接访问
+指针变量不能用整数来赋值
int p=10;//错误
int
p=0;//赋值为0,表示p不指向任何变量

+指针变量的指向那个类型应当与所指向变量的类型一致

void类型
int x=10;double y=10.5
void p;
p=&x;//正确
cout<<
((int )p);//显示结果为10 void型指针间接访问int型需要强制转换为int
p=&y;//正确
cout<<((double )p);//显示结果为10.5

+相同类型指针变量之间可以相互赋值

int x=10,pi=&x;
double y=10.5,
pd=&y;

int *p1;

p1=pi;//正确 指向类型相同 结果p1与pi都指向x
p1=pd;//错误 指向类型不同

void *p2;

p2=pi;//正确
p2=pd;//正确

+可以定义指向常变量请的指针,通过该指针变量不呢个修改所指向的常变量的值

const int x=10;
x=15;//错误

const int p;//指向常变量的指针

p = &x;
cout<<
p;//正确
*p=15;//错误 间接修改常变量的值错误

int y=20;

p=&y;
cout<<p;//正确
p=15;//错误 不能修改

+可以定义指针类型的常变量(即指针常变量),需定义时初始化,以后不能再改变其指向

int x=10,y=20;
int *const p=&x;
p=&y;//错误 不能重新赋值

转载于:https://www.cnblogs.com/OceanF/p/9236855.html

转载地址:https://blog.csdn.net/weixin_30896763/article/details/98579267 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Rails Migration 备忘录
下一篇:【ASP.NET Core】如何隐藏响应头中的 “Kestrel”

发表评论

最新留言

不错!
[***.144.177.141]2024年04月21日 05时42分20秒