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

相关推荐
武子康4 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康6 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言13 分钟前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥20 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base33 分钟前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
jiao_mrswang40 分钟前
leetcode-18-四数之和
算法·leetcode·职场和发展
Allen Bright1 小时前
maven概述
java·maven
qystca1 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
编程重生之路1 小时前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱1 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea