C语言初始操作符

本文详细介绍了C/C++编程中的不同操作符类别,包括算术、移位、关系、位、逻辑、赋值和条件操作符。特别强调了操作数类型、算数位移与逻辑位移的区别以及在特定场景下的使用技巧,如交换两个数的方法和复合赋值的便捷性。
摘要由CSDN通过智能技术生成

一.操作符分类

主要介绍的有以下几种操作符:

算数操作符                             单目操作符                         

移位操作符                              关系操作符

位操作符                                   逻辑操作符

赋值操作符                                 条件操作符

二.算数操作符

算数操作符是我们比较容易理解的比如 加 + 减 - 乘 *   / 除   取模%

这些操作符使用的细节得注意:

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

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

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

               

当我把b赋值为浮点数的时候程序就报错,这个小点很容易忘记

三.位移操作符

左移操作符:<<

右移操作符:>>

这里的左移和右移移动是二进制位

注意:移位操作符的操作数只能是整数

3.1左移操作符

>>移位的规则是:

左边抛弃,右边补0

int main()
{

	int a = 3;
	//0000 0000 0000 0000 0000 0000 0000 0011

	int b = a << 1;
	//0000 0000 0000 0000 0000 0000 0000 0110

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

	return 0;
}

此时a = 3 ,的二进制是11 ,a向左移动1,此时a变成110,b变成6

3.2右移操作符

<<移动规则:

右移分两种:

1.逻辑位移:

 左边用0填充,右边丢弃  

2.算数位移:

左边用丢弃的值填充,右边丢弃

4.位操作符

位操作符有:

& 按位与

| 按位或

^ 按位异或

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

&按位与2个数都是非零才为真

int main()
{
   int num1 = 3;
   int num2 = -5
   int sum = num1 & num2;
 //按位与&
   //000000000000000000000000000011  -3的补码
   //100000000000000000000000000101  -5的原码
   //反码符号位不变,按位取反(反码)
   //111111111111111111111111111010  -5的反码
   //反码+1等于补码
   //111111111111111111111111111011   -5的补码
   //000000000000000000000000000011   -3的补码
   //000000000000000000000000000011   
-5的补码和3补码按位与&
   

  
   printf("%d\n" , sum);
   return 0;
}

|按位与两数都为0才为0,不都为0就都为1

int main()
{
	int num1 = 3;
	int num2 = -5;
    int sum	= num1 | num2;
	
	//按位或|
	//111111111111111111111111111111011  -5的补码 
	//000000000000000000000000000000011  3的补码
	//111111111111111111111111111111011
	printf("%d\n", sum);

	return 0;
}

^按位异或相同为0,相异为1

int main()
{
	int num1 = 3;
	int num2 = -5;
    int sum	= num1 ^ num2;
	
	
	//111111111111111111111111111111011  -5的补码 
	//000000000000000000000000000000011  3的补码
	//111111111111111111111111111111000
	printf("%d\n", sum);

	return 0;
}

有人就会问了,设计这些有什么用

当我们遇到不准许创建临时变量交换实现两个数的交换,这时我们就可以用上面的操作符

int main()

{
	int a = 10;
	int b = 20;
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;

	//a^a = 0;
	//0^a = a;
	//3^3^5=5
	//3^5^3 =5
	//a = a ^ b;

	//printf("%d %d\n", a, b);
	printf("%d\n", a);
	return 0;
}

5.赋值操作符

赋值操作符让之前不满意的值自己可以重新赋值

int a = 123; //原始值
a = 120; //重新赋值

赋值也可以连续使用

int  a = 1;
int  b = 2;
a = b = a + 1;

这种写法不够简洁

可以使用复合赋值符

+= -=....等等

int a = 1;
a = a + 1;
可以直接写成
a += 1;

6.单目操作符

! 逻辑反操作符                                     sizeof()

- 赋值                                                    -- 前置 或后置 --          

+ 正值                                                    ++前置 或后置++

& 取地址                                                *解引用操作符

(类型)强制类型转换

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值