[C语言(13)操作符讲解(1)]

操作符讲解(1)

算术操作符

+         -         *         /         %

1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数

2.对于/操作符如果两个操作数都为整数,执行整数出发.而只要浮点数执行的就是浮点数除法

3.%操作符的两个操作数必须为整数。返回的是整除之后的余数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

 //操作符解释
int main()
{
	float a = 6.0/5;
	printf("%f\n", a);
	return 0;
}

 

int main()
{
	int a = 7 % 3;//模只能为整数
	printf("%d\n", a);
	return 0;
}

移位操作符

<<             >>

左移操作符:左边抛弃,右边补0

右移操作符:

1.逻辑移位:左边补0,右边丢弃

2.算术移位:左边用原该值的符号位填充,右边丢弃

int main()
{
	int a = 2 ;
	//把a的二进制位向左移动一位
	int b = a << 1;
	int d = a >> 1;
 //针对负数:一个整数的二进制表示有3种
//原码:二进制
//反码:符号位不变 其他按位取反
//补码:反码+1

	printf("b = %d\n", b);
	printf("d = %d\n", d);

}

位操作符

&:按位与         |:按位或         ^:按位异或

注:他们的操作数必须是整数

int main()
{
	int a = 3;
	int b = 5;

	// & - 按(2进制)位与  对应的二进制位只要有0就是0 两个位都是1 按位与出来才是1
	int c = a & b;
	//对应的二进制位 有1则为1 两个为0则为0
	int d = a | b;
	//对应的二进制位进行异或
	//规则:相同为0,相异为1
	int e = a ^ b;
	printf("c = %d\n", c);
	printf("d = %d\n", d);
	printf("e = %d\n", e);
	//3的二进制位:00000000000000000000000000000011
	//5的二进制位:00000000000000000000000000000101
	return 0;      
}


//一道面试题 不能创建第三个值 把a,b的值进行交换
int main()
{	
	int a = 2020;
	int b = 2002;
	//两个相同数字异或时等于0
        //0和任何一个数字异或时就是他本身
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("a = %d b = %d", a, b);

	return 0;
}

赋值操作符

=         +=         -=         /=         >>=        <<=        %=

int main()
{
	//一个=是赋值
	//两个==是判断
	int a = 10;
	a += 3;
	printf("%d\n",a);
	return 0;
}

单目操作符

!:逻辑反操作         -         +         &:取地址         sizeof:计算类型的长度         ~:按位取反         -- ++         *         (类型)

//!:逻辑反操作
int main()
{
	//单目操作符 - 只有一个操作数的操作符
	//flag为真,打印真
	int flag = 5;
	if (flag)
	{
		printf("真\n");
	}
	//falg为假,打印假
	if(!flag)
	{
		printf("假\n");
	}
}

 //sizeof操作符

int main()
{
	//sizeof是操作符,不是函数
	int a = 10;
	char arr[10] = 0;
	printf("%d\n", sizeof(a));//计算a所占空间的大小,单位是字节

}

 

int main()
{
	//练习题 算下两个数是多少
	short s = 5;
	int a = 10;
	printf("%d\n", sizeof(s = a + 2));//sizeof括号中的表达式是不参加运算的!
	printf("%d\n", s);

}

 // ~:按位取反操作符

int main()
{
	int a = -1;
	//10000000000000000000000000000001 - 原码	
	//11111111111111111111111111111110 - 反码
	//11111111111111111111111111111111 - 补码
	// ~按位取反
	int b = ~a;
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
	
}

 //++ --操作符

int main()
{
	int a = 10;
	int b = a++;//后置++  先使用,后++
	int c = ++a;//前置++ 先加加,后使用

	printf("%d\n", a);//12
	printf("%d\n", b);//10
	printf("%d\n", c);//12
}

//&和* 操作符
int main()
{
	int a = 10;
	printf("%p\n", &a);// &取地址操作符
	int* pa = &a;//pa是用来存放地址的 -pa就是一个指针变量
	*pa = 20;//* 解引用操作符 - 间接访问操作符
	printf("%d\n", a);

	return 0;
}


//(类型)操作符
int main()
{
	int a = (int)3.14;//强制类型转换
		return 0;
}

关系操作符

>         >=         <        <=         !=:用于测试不相等         ==:用于测试相等

int main()
{
	int a = 3;
	int b = 5;
	if (a == b)//如果a等于b 那么做什么事
	{

	}
	else if (a != b)//如果a不等b,做什么事
	{

	}
	return 0;//比较两个字符 不能用==
}

逻辑操作符

&&:逻辑与         ||:逻辑或

int main()
{
	int a = 3;
	int b = 0;
	if (a && b)//如果A为真 B为真 才进循环
	{

	}
	if (a || b)//如果AB有一个为真 就为真
	return 0;

条件操作符

exp1?         exp2:         exp3

//条件操作符
int main()
{
	int a = 3;
	int b = 0;
	b = (a > 5 ? 1 : -1);//如果a大于5 那么 1的值赋给b  如果a不大于5 那么-1的值赋给b
	return 0;
}

逗号表达式

exp1,     exp2,     exp3,    ...expN

逗号表达式 - 要从左向右一次计算,但是整个表达式的结果是最后一个表达式的结果

int main()
{
	//逗号表达式 - 要从左向右一次计算,但是整个表达式的结果是最后一个表达式的结果
	int a = 3;
	int b = 5;
	int c = 0;
	int d = (c = 5, a = c + 3, b = a - 4, c += 5);
	printf("%d\n", d);//10
	printf("%d\n", c);//10
	printf("%d\n", b);//4
	printf("%d\n", a);//8
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值