【时时三省】C语言之运算符的使用

目录

1,赋值运算

2,算术运算符

常见算术运算符如下:

3,逗号运算符

4,逻辑运算符

[&& 和 || 是有短路效果的。](#&& 和 || 是有短路效果的。)

代码解析:

5,自增自减运算符


山不在高,有仙则名。水不在深,有龙则灵。

----CSDN 时时三省

1,赋值运算

代码如下:

cs 复制代码
int FuZhi(void)
{
	float b = 56.7;
	int a;
	float c;

	a = b; // a = 56
	c = a; // c = 56.000000
	printf("a = %d, c = %f\n", a, c);
	
	b = 56.3;
    a = b; // a = 56
	c = a; // c = 56.000000
	printf("a = %d, c = %f\n", a, c);
	return 0;
}

运行结果;

思考:

不同类型的数值赋值时,会有数据直接截断的效果。

2,算术运算符

代码如下:

cs 复制代码
int SuanShuYunSuanFu(void)
{
	int a = 5;
	float b = 15.0;
	int c;

	c = b - a;
	/*
	b - a : 15.0 - 5.000000  = 10.000000
	c = 10.000000
	*/
	c = (int)b % a;
    printf("c = %d\n", c);
	return 0;
}

执行结果如下;

思考:

注意:/ 和 % 符号的右边的数,不能为 0.

常见算术运算符如下:

3,逗号运算符

代码如下:

cs 复制代码
int DouHao(void)
{
	int a = 5;
	int b = 6;
	int c;

	c = (a = a + 5, a + 6, b = a + b, b * 3);
	printf("a = %d, b = %d\n", a, b);
	printf("c = %d\n", c);
	return 0;
}

执行结果;

思考:

逗号运算符可以用于分隔多个表达式,且最终结果将是最后一个表达式的值。

小括号里面的算式,都经过计算。

4,逻辑运算符

代码如下:

cs 复制代码
int LuoJi(void)
{
	int a = 3;
	int b = 6;
	int c = 7;
	int d = 0;

	d = (a - 3) && (c = b + c);
	printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);

	a = 3; b = 6; c = 7; d = 0;
	d = (a + 3) && (c = b + c);
	printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);

	a = 3; b = 6; c = 7; d = 0;
	d = (a - 3) || (c = b + c);
	printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);

	a = 3; b = 6; c = 7; d = 0;
	d = (a + 3) || (c = b + c);
	printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
	return 0;
}

执行结果:

思考:

这个执行结果,还是很有意思的。

&& 和 || 是有短路效果的。

短路效果是指,m && n,当m为1时,才会执行判断n的值;当m为0时,就不会执行判断n的值。

m || n, 当m为1时,不会执行判断n的值;当m为0时,才会判断n的值。

且 && 和 || 的运算结果,只能是 0 或 1。 注意和 & 和 | 运算符做区分。

&&:两个为1,才为1.

||:有一个为1,就为1.

代码解析:

d = (a - 3) && (c = b + c);

printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);

因为a=3, 所以 a - 3 = 0, 所以 c = b + c 不会执行,所以c 的值不会变。因为 a - 3 为0,所以 && 运算的结果为 0.

5,自增自减运算符

代码如下:

cs 复制代码
int ZiZengZiJian(void)
{
	int a = 3;
	int b = 3;
	int c = 0;
	int d = 0;
	int e = 5;
	int f = 0;

	c = a++; // a = 4, c = 3, b = 4, d = 4`
	d = ++b;

	printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
	//e = 5
	f = e++ + ++e + e++ + e++ + ++e;
	printf("e = %d, f = %d\n", e, f);
}

执行结果:

思考:

自增自减运算符(++、--):自增自减运算符分为前置自增自减和后置自增自减,分别表示先进行运算再进行自增自减操作和先进行自增自减操作再进行运算。

所以,c=a++; a的值先赋给c, a再自增1. 所以 a = 4, c = 3.

相关推荐
迷迭所归处几秒前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ29 分钟前
Java 23 的12 个新特性!!
java·开发语言·学习
leon62530 分钟前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
CV工程师小林30 分钟前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
Navigator_Z1 小时前
数据结构C //线性表(链表)ADT结构及相关函数
c语言·数据结构·算法·链表
Aic山鱼1 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
拾光师1 小时前
spring获取当前request
java·后端·spring
aPurpleBerry1 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
天玑y1 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
我是苏苏1 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言