栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 -- 操作符

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 -- 操作符

C语言 -- 操作符
  • 算数操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 逗号表达式

算数操作符
取余
+-*/%

1.除了取余%操作符外,其他的操作符可以作用于整数和浮点数;
2.对于除/操作符,如果两个操作数都为整数,则执行整数除法;而操作数只要有浮点数执行的就是浮点数除法;
3.取余%操作符的两个操作数必须为整数,返回的是整除之后的余数。

#include

void main()
{
	int a = 3, b = 2;
	double c = 1.5;

	printf("a + b = %dn", a + b);   //5
	printf("a - b = %dn", a - b);	 //1
	printf("a * b = %dn", a * b);	 //6
	printf("a / b = %dn", a / b);	 //1
	printf("a %% b = %dn", a % b);	 //1
									  
	printf("a + c = %.2fn", a + c);  //4.50
	printf("a - c = %.2fn", a - c);  //1.50
	printf("a * c = %.2fn", a * c);  //4.50
	printf("a / c = %.2fn", a / c);  //2.00
}
移位操作符
左移右移
<<>>

左移操作符移位规则:

左边抛弃,右边补0;

右移操作符移位规则:
右移运算分为两种:

1.逻辑移位,左边用0填充,右边丢弃;
2.算术移位,左边用原该值的符号位填充,右边丢弃。
如果操作数是无符号数即是逻辑移位,如果操作数是带符号数,是算术移位。

代码示例:

正整数a左移n位的值为(a*(2^n));
正整数a右移n位的值为(a/(2^n));

#include

void main()
{
	int a = 10;
	//0000 0000 0000 0000 0000 0000 0000 1010
	//0000 0000 0000 0000 0000 0000 0010 1000 -- 左移
	//0000 0000 0000 0000 0000 0000 0000 0010 -- 右移
	printf("%dn", a << 2); //40
	printf("%dn", a >> 2); //2

	//算数右移
	int b = -10;
	//补码1111 1111 1111 1111 1111 1111 1111 0110
	//补码1111 1111 1111 1111 1111 1111 1101 1000 -- 左移
	//原码1000 0000 0000 0000 0000 0000 0010 1000 -- 左移
	//补码1111 1111 1111 1111 1111 1111 1111 1101 -- 右移
	//原码1000 0000 0000 0000 0000 0000 0000 0011 -- 右移
	printf("%dn", b << 2); //-40
	printf("%dn", b >> 2); //-3
}
位操作符
按位与按位或按位异或
&|^

其操作数必须位整数

代码示例:

#include

void main()
{
	int num1 = 1;
	int num2 = 2;
	//1--0000 0000 0000 0000 0000 0000 0000 0001
	//2--0000 0000 0000 0000 0000 0000 0000 0010

	int x = num1 & num2; //0
	int y = num1 | num2; //3
	int z = num1 ^ num2; //3
	printf("%d  %d  %d", x, y, z);
}
赋值操作符
符号表达式含义
=a = 10将10赋给a
+=a += 10a = a+10
-=a -= 10a = a-10
*=a *= 10a = a*10
/=a /= 10a = a/10
%=a %= 10a = a%10
>>=a >>= 10a = a>>10
<<=a <<= 10a = a<<10
&=a &= 10a = a&10
|=a |= 10a = a|10
^=a ^= 10a = a^10
单目操作符
符号含义符号含义
逻辑取反~按位取反
-负值- -自减
+正值++自增
&取地址*间接访问操作符(解引用操作符)
(类型)强制类型转换sizeof操作数的类型长度(以字节为单位)

注意:sizeof是操作符,可以求变量(类型)所占空间的大小

前++或前- -后++或后- -
先自增或自减再进行其他运算先进行其他运算后再自增或自减
关系操作符
符号含义
>大于
>=大于等于
<小于
<=大于
!=用于测试“不相等”
==用于测试“相等”

在编程过程中注意==与=的使用

逻辑操作符
逻辑与逻辑或
&&||

对于按位操作符和逻辑操作符要加以区分
逻辑操作符会返回一个布尔值

代码示例:

#include

void main()
{
	printf("1&&2 = %dn", 1 && 2); //1
	printf("1&2 = %dn", 1 & 2); //0

	printf("1||2 = %dn", 1 || 2); //1
	printf("1|2 = %dn", 1 | 2); //3
}

逻辑与&&与逻辑或||都是短路操作符;
当逻辑与&&的第一个操作数为假时便不再往后执行,结果必为假;
当逻辑或||的第一个操作数为真时便不再往后执行,结果必为真。

代码示例:

#include

void main()
{
	int i = 0, a = 0,b = 2,c = 3, d = 4;
	i = a++ && ++b && d++;
	printf("i=%dn", i); //0
	printf("a=%dn", a); //1
	printf("b=%dn", b); //2
	printf("c=%dn", c); //3
	printf("d=%dn", d); //4
}

条件操作符

exp1 ? exp2 : exp3
当exp1为真时,结果为exp2;否则结果为exp3
#include

void main()
{
	int a = 6;
	int b;

	if (a < 5)
	{
		b = 3;
	}
	else
	{
		b = -3;
	}
	printf("b = %dn", b); //-3

	//上述if-else语句可以用条件操作符实现
	int c;
	c = (a < 5) ? 3 : -3;
	printf("c = %dn", c); //-3
}
逗号表达式
exp1, exp2, …, expN

用逗号隔开多个表达式,从左向右依次执行;
整个表达式的结果时最后一个表达式的结果。

代码示例:

#include

void main()
{
	int a = 1;
	int b = 2;
	int c = (a > b, a = b + 10, a, b = a + 1);
	printf("c = %dn", c); //13

	int d = -3;
	if (a = b + 1, c = a / 2, d > 0) //d<0,所以执行else
	{
		printf("真n");
	}
	else
	{
		printf("假n"); //将会输出这句
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/528983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号