【时时三省】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.

相关推荐
历程里程碑16 分钟前
LeetCode热题11:盛水容器双指针妙解
c语言·数据结构·c++·经验分享·算法·leetcode·职场和发展
想不明白的过度思考者21 分钟前
Spring Boot 配置文件深度解析
java·spring boot·后端
第二只羽毛23 分钟前
Java图书管理系统的设计与实现
java·大数据·安全·系统安全
cike_y5 小时前
Mybatis之解析配置优化
java·开发语言·tomcat·mybatis·安全开发
是一个Bug7 小时前
Java基础50道经典面试题(四)
java·windows·python
Slow菜鸟7 小时前
Java基础架构设计(三)| 通用响应与异常处理(分布式应用通用方案)
java·开发语言
wadesir7 小时前
Rust中的条件变量详解(使用Condvar的wait方法实现线程同步)
开发语言·算法·rust
我是Superman丶7 小时前
《Spring WebFlux 实战:基于 SSE 实现多类型事件流(支持聊天消息、元数据与控制指令混合传输)》
java
廋到被风吹走7 小时前
【Spring】常用注解分类整理
java·后端·spring
是一个Bug7 小时前
Java基础20道经典面试题(二)
java·开发语言