c语言操作符详解

本文详细介绍了C语言的各种操作符,包括算术操作符、关系操作符、逻辑操作符、位操作符、赋值操作符、单目运算符、逗号运算符、条件运算符以及下标访问、函数调用和结构体成员访问操作符。强调了/和%在浮点数计算中的类型转换、关系操作符的使用误区、位操作符的特性和赋值操作符的便捷性。
摘要由CSDN通过智能技术生成

c语言操作符有以下几大类:
1.算术操作符
2.关系操作符
3.逻辑操作符
4.位操作符
5.赋值操作符
6.单目运算符
7.逗号运算符
8.条件运算符
9.下标访问,函数调用,结构体成员访问操作符

一.算术操作符(+ - * / %)

常见运算符就是 加 减 乘 除 取模 取余(取模),加减很简单了,和数学中的使用没什么区别。这里的重点主要在 / 和 % 操作符了,这两个操作符涉及到很多c语言类型的问题。下来给大家介绍一下:
**

1. / 除法操作符:

该操作符在运算结果为整型数据的运算上似乎没什么问题,但很多初学者在计算浮点数时总是达不到自己预期的结果,因为使用 / 运算符想得到浮点数数据时必须满足操作数为浮点数,然后操作结果保存在浮点数类型的变量中。举例:

int main()
{
   
	double ret = 0.0;//用浮点数来保存操作结果
	ret = 1.0 / 2.0;//操作数为浮点数
	printf("%f\n", ret);//打印时以%f的格式打印
	return 0;
}

其中第四行代码,ret = 1.0 / 2.0;平时很多人会写成ret=1.0/2; 结果同样正确,上面不是说操作数必须是浮点数吗,这里2是整型啊,原因在于此处编译器进行了隐式类型转换,将 2 转换为double类型,这样 / 两边的操作数都是浮点型了。这个大家要心里清楚。(隐式类型转换和强制类型转换及数据截断,整形提升会在博主的另一篇博客中讲到);
另外需要注意的是 / 右边的除数不能为0,否则编译器会报错。
**

2.% 取余操作符

该操作符对处理的数据类型比 / 还要严格,它操作的数据必须是整型且不能对0取模;可以应用于取数位或者通过随机数产生一个内的范围数;
举例:

int main()
{
   
	int ret = rand() % 100;//产生0-99的随机数
	//ret = 10 % 0;编译器报错!
	printf("%d\n", ret);
	return 0;
}

二.关系操作符(< > <= >= == !=)

关系操作符均为双目运算符,其运算结果只有两种结果,即真(1)或者假(0)。这里注意不能用数学的思维来用这些操作符,一些容易犯的错误,如判断一个变量a是否在一定范围内。就不能写成10<a<20;这里编译器会先执行10<a;上面说过该表达式的值只有0和1,那么无论10和a的大小关系如何,10<a;的运算结果一定是小于20的`,这与我们的预期不符!因此应该写成10<a&&a<20;这两个表达式运算结果完全不同。

int main()
{
   
	int a = 30;
	if (10 < a < 20)
	{
   
		printf("我是bug!\n");
	}
	else
	{
   
		printf("我才是bug\n");
	}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值