2 变量、运算符、位运算

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

一、变量
定义变量
访问变量
变量=内存单元
定义变量
数据类型
预定义数据类型

写入
输入 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;//一条定义变量语句可既包括普通变量,又包括引用变量

//键盘输入一个数值,计算其平方的值
#include <iostream>
usingnamespace std;

int main()
{
  int x;
  cin>>x;
  /*
  cout<<x*x<<endl;//计算并显示x^2的值
  */
  int&xa = x;//定义一个变量x的应用变量xa
  cout<<xa * xa <<endl;//改用访问变量xa来计算并显示x^2的值
                             //访问引用变量xa所读出的数据就是变量x的值
  return 0;
}

+指针 : 内存地址
取地址运算符"&"
&变量名
所取出的变量地址是程序执行时该变量所分配内存的地址,每次执行程序时,变量不一定会被分配在同一内存单元,这取决于本次执行时计算机中哪些内存单元是空闲的
一个变量可能占用多个字节,变量地址指的是变量所占内存单元第一个字节的地址,也称首地址
取地址运算符是单目运算符,操作数必须是变量,其优先级为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