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

相关推荐
JieE2126 小时前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2127 小时前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
用户35218024547511 小时前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
vivo互联网技术11 小时前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦12 小时前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
东坡白菜14 小时前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫14 小时前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq15 小时前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
用户4978630507315 小时前
(一)小红的数组操作
算法·编程语言