C++第3章 表达式与语句

目录

3.1运算符

3.1.1 算术运算符——加减乘除+-*/

3.1.2 算术运算符——取模%

3.1.3 算术运算符——前后置递增运算i++  ++i

3.1.4 赋值运算符

3.1.5 关系运算符——比较

3.1.6 逻辑运算符! &&  ||

3.1.7 位运算符——&|^~

3.2结合性和优先级

3.3表达式

实例3.3.1:逗号运算符的应用

实例3.3.2:隐式类型转换

实例3.3.3:强制类型转换应用

实例3.3.4:复合赋值运算符的应用

实例3.3.5:不借助第3个变量交换两个变量的值


3.1运算符

3.1.1 算术运算符——加减乘除+-*/

#include<iostream>
using namespace std;
int main() {
	int a1 = 10;
	int b1 = 3;
	cout << a1 + b1 << endl;
	cout << a1 - b1 << endl;
	cout << a1 * b1 << endl;
	cout << a1 / b1 << endl;//两个整数相除,结果依然是整数,将小数部分除去

	int a2 = 10;
	int b2 = 20;
	cout << a2 / b2 << endl;

	int a3 = 10;
	int b3 = 0;
	//cout << a3 / b3 << endl; //除数不能为0

	//两个小数可以相除
	double d1 = 0.5;
	double d2 = 0.25;
	cout << d1 / d2 << endl;//运算结果也可以是小数

}

3.1.2 算术运算符——取模%

#include<iostream>
using namespace std;

int main() {

	//只有整数可以进行取余运算
	//取模运算本质,就是求余数
	int a1 = 10;
	int b1=3;
	cout << a1 %b1 << endl;

	int a2 = 10;
	int b2 = 20;
	cout << a2 % b2 << endl;

	//基于除法运算,所以也做不了取余运算
	int a3 = 10;
	int b3 = 0;
	//cout << a3 % b3 << endl;

	//两个小数是不可以做取余运算的
	double d1 = 3.14;
	double d2 = 1.1;
	//cout << d1 % d2 << endl;
	return 0;
}

3.1.3 算术运算符——前后置递增运算i++  ++i

#include<iostream>
using namespace std;

int main() {
	//1、前置递增
	int a = 10;
	++a;
	cout << "a=" << a << endl;//11


	//2、后置递增
	int b = 10;
	b++;
	cout << "b=" << b << endl;//10

	//3、前置和后置的区别
	//前置递增 先让变量+1 然后进行表达式运算
	int a2 = 10;
	int b2 = ++a2 * 10;
	cout << "a2=" <<a2<< endl;//11
	cout << "b2=" <<b2<< endl;//110

	//后置递增 先进性表达式运算,后让变量+1
	int a3 = 10;
	int b3 = a3++ * 10;
	cout << "a3=" << a3 << endl;//11
	cout << "b3=" << b3 << endl;//100

	return 0;
}

3.1.4 赋值运算符

#include<iostream>
using namespace std;

int main() {
	//赋值运算符

	//	=
	int a = 10;
	a = 100;
	cout << "a=" << a << endl;//100

	//	+=
	a = 10;
	a += 2;
	cout << "a=" << a << endl;//12

	//	-=
	a = 10;
	a -=2;
	cout << "a=" << a << endl;//8

	//	*=
	a = 10;
	a *= 2;
	cout << "a=" << a << endl;//20

	//	/=
	a = 10;
	a /= 2;
	cout << "a=" << a << endl;//5

	//	%=
	a = 10;
	a %= 2;
	cout << "a=" << a << endl;//0

	return 0;
}

3.1.5 关系运算符——比较

#include<iostream>
using namespace std;

int main() {
	//比较运算符

	//	==
	int a = 10;
	int b = 20;
	cout << (a==b) << endl;//0

	//	!=
	cout << (a != b) << endl;//1

	//	>
	cout << (a > b) << endl;//0

	//	<
	cout << (a < b) << endl;//1

	//	>=
	cout << (a >= b) << endl;//0

	//	<=
	cout << (a <= b) << endl;//1

	return 0;
}

3.1.6 逻辑运算符! &&  ||

非0即为真,记住这句话。

#include<iostream>
using namespace std;

int main() {

	//01	逻辑运算符 非 !
	int a =10;
	// 在C++中 除了0,都为真
	cout << !a << endl;//0
	cout << !!a << endl;//1

	//02	逻辑运算符 与 &&  同真为真,其余为假
	int a1 = 10;
	int b1 = 10;
	cout << (a1&&b1)<< endl;//1

	a1 = 0;
	b1 = 10;
	cout << (a1&&b1)<< endl;//0

	a1 = 0;
	b1 = 0;
	cout << (a1&&b1)<< endl;//0

	//03	逻辑运算符 或 ||  同假为假,其余为真
	int a2 = 10;
	int b2 = 10;
	cout << (a2||b2) << endl;//1

	a2 = 0;
	b2 = 10;
	cout << (a2||b2) << endl;//1

	a2 = 0;
	b2 = 0;
	cout << (a2||b2) << endl;//0

	return 0;
}

3.1.7 位运算符——&|^~

  • 与&

(12)10&(8)10=(8)10

  • 或|

  (4)10&(8)10=(12)10

  • 异或^:若两个操作数对象同一位时为1,则结果对应位为1;否则为0。

(31)10&(22)10=(31)10 

  • 取反~

3.1.8 移位运算符——<<  >>

例1:左移运算

#include<iostream>
using namespace std;             //命名空间 

int main() {	//主函数
	int a = 0x40, b;
	b = a << 1;
	cout << b << endl;//128
	return 0;
}

例2:使用移位运算

#include<iostream>
#include<stdio.h>
using namespace std;             //命名空间 

int main() {	//主函数
	long nWord = 0x12345678;
	int nBits;
	nBits = nWord & 0xFFFF;
	printf("low bits are 0x%x\n", nBits);//low bits are 0x5678
	nBits = (nWord & 0xFFFF0000) >> 16;
	printf("hight bits are 0x%x\n", nBits);//hight bits are 0x1234
	return 0;
}

3.2结合性和优先级

3.3表达式

实例3.3.1:逗号运算符的应用

#include<iostream>
using namespace std;             //命名空间 

int main() {	//主函数
	int a = 4, b = 6, c = 8, res1, res2;
	res1 = a, res2 = b + c;
	for (int i = 0, j = 0; j < 2; j++) {
		printf("y=%d,x=%d\n", res1, res2);
	}
	//y=4,x=14
	//y=4,x=14
	return 0;
}

实例3.3.2:隐式类型转换

#include<iostream>
using namespace std;             //命名空间 

int main() {	//主函数
	double result;
	char a = 'k';//ASCII码表,k对应107 
	int b = 10;
	float e = 1.515;
	result = (a + b) / e;//117/1.515
	printf("%f\n", result); //77.227722
	return 0;
}

实例3.3.3:强制类型转换应用

#include<iostream>
using namespace std;             //命名空间 

int main() {	//主函数
	float i, j;
	int k;
	i = 60.25;
	j = 20.5;
	k = (int)i + (int)j;
	cout << k << endl;//80
	return 0;
}

实例3.3.4:复合赋值运算符的应用

#include<iostream>
using namespace std;             //命名空间 

int main() {	//主函数
	int a = 10;
	//运算符的优先级关系:-的优先级较高,+=,*=,/=的优先级相等,较低,而且是右结合
	//等效语句如下:a=a/(a-6)     a=a*a    a=a+a
	a += a *= a /= a - 6;
	//a=10/(10-6)=10/4=2.5( 需要向下取整得到2)
	//a = a * a = 2 * 2 = 4
	//a = a + a = 4 + 4 = 8
	cout << a << endl;//8
	return 0;
}

实例3.3.5:不借助第3个变量交换两个变量的值

法一:

#include<iostream>
using namespace std;             //命名空间 

int main() {	//主函数
	int a = 1, b = 2;
	a = a + b;
	b = a - b;
	a = a - b;
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	return 0;
}

法二:

#include<iostream>
using namespace std;
int main()
{
	int a, b;
	cout << "inPut a and b:" << endl;
	cin >> a >> b;
	cout << "a:" << a << endl;
	cout << "b:" << b << endl;

	if (a > b)
	{
		b = a - b;
		a = a - b;
		b = a + b;
	}
	cout << "a:" << a << endl;
	cout << "b:" << b << endl;
	return 0;
}

世间安得双全法,不负如来不负卿!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Catherinemin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值