C++学习笔记2020.3.12(上)

<<运算符的优先级比表达式中使用的运算符高,因此下列代码要用括号括起来来获得正确的运算顺序
#include<iostream>
int main(void){
	using namespace std;
	int x;
	cout<<(x=100)<<endl;
	cout.setf(ios_base::boolalpha);
	cout<<(x<90)<<endl;
	return 0;
} 
 老式c++实现可能要求使用ios::boolalpha,
而不是ios_base::boolalpha来作为cout.setf()的参数. cout.setf(ios_base::boolalpha);设置了一个标记, 该命令是cout显示true和false

副作用:当判定表达式的值这种操作改变了内存中数据的值是,我们说表达式有副作用(side effect)

顺序点(sequence point)是程序执行过程中的一个点,在这里用作进入下一步前对所有的副作用进行了评估: 在C++,’;'就是一个顺序点

#include<iostream>
int main(void){
	using namespace std;
	int x;
	x=1;
	while (x++<10){
		cout<<x<<endl;
	} 
	return 0;
} 

该表达是while (x++<10) 中,该表达式的末尾是一个顺序点,所以确保副作用后(将x加1)后进入循环体解放.

例:
有副作用: ++x+15
无副作用: x+15
for循环的初始化部分中声明变量
#include<iostream>
int main(void){
	using namespace std;
	for (int i=0;i<5;i++)
		cout<<i<<endl;
	return 0;
} 

改变for循环步长

#include<iostream>
int main(void){
	using std::cout;
	using std::cin;
	for (int i=0;i<5;i=i+2)
		cout<<i<<'\n';
	return 0;
} 
这里使用using表示声明,而不是using编译指令.

递增运算符和递减运算符

#include<iostream>
int main(void){
	using namespace std;
	int x;
	x=1;
	cout<<(++x+1)<<endl;
	cout<<(x+++1)<<endl;
	return 0;
}

前缀版(位于操作是前面)格式 ++X

后缀版(位于操作是后面)格式 X++

! 前缀版效率比后缀版效率高

递增递减运算和指针

#include<iostream>
int main(void){
	using namespace std;
	int arr[5]={1,2,3,4,5};
	int *p=arr;
	cout<<*p<<endl;
	cout<<*(++p);
	return 0;
} 

1 前缀递增 前缀递减 解除引用运算符 同级

(从右向左结合)

2 后缀递增 后缀递减 同级

(从左向右结合)

3 后缀运算符比前缀运算符优先级高

组合运算符

例子:
x+=1 → x=x+1
x*=x+y → x=x*(x+y)

复合语句

C++避开类似循环体必须是一句语句,如果循环体中包含很多条语句,这将很不方便的限制方式,用两个花括号来构造一条复合语句(代码块)[其被视为一条语句].
如果在复合语句中定义一个新的变量,则仅当程序执行该语句块中的语句时,变量才存在.执行完语句后变量将被释放.
#include<iostream>
int main(void){
	using namespace std;
	int x=100;
	{
		cout<<x<<endl;
		int x=50;
		cout<<x<<endl;
	}
	cout<<x<<endl;
	return 0;
} 

‘,’ 运算符:

1 分割列表中的变量
2 对表达式完成同的任务允许将这两个表达式C++句法只允许放一个表达式的地方
例子:
1 int i.j; //用作分割列表中的变量
2i++,j++; //连接两个相同的任务

关系表达式

关系运算符:

操作符含义
<小于
<=小于等于
>大于
>=大于等于
==等于
!=不等于

注意:

x=1 读作:x赋值1
x==1 读作:x等于1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值