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

相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
晓蛋1 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特1 天前
算法竞赛C++常用的STL
c++·算法
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
牵猫散步的鱼儿1 天前
重载、重写(覆盖)、重定义区别
c语言