C语言:操作符和表达式 位操作


  
在这里插入图片描述

1 算数操作符

加减乘除和取余操作,+ - * / %

2 移位操作符

左移 << 右移 >>

3 位操作符

想要用位运算,首先要把数字转化成2进制来理解怎么操作。
表示取反操作
& 表示与操作
| 或操作
^ 异或操作

3.1 &

判断奇偶数,因为位操作在判断时都是二进制,所以如果第0位是1的话,那么,就是奇数。

#include <stdio.h>

int odd_or_even(int num)
{
   int a= num&1;
   if ((num&1)==0)// 这里要注意num&1要加括号,==的优先级比 &要高
   printf("这是偶数\n");
   else 
   printf("这是奇数\n");

}

int main(){
   int num=0;
   printf("请输入数字?\n");
   scanf("%d",&num);
   odd_or_even(num);
}


3.2 ^异或

异或支持交换律和结合律,并且自己和自己异或=0,任何数和0异或等于自己。
应用1 :


int swap(int *a, int *b)
{
   *a = *a^*b;//得到一个两者异或的值
   *b = *a^*b;
   *a = *a^*b;
   printf("a = %d, b = %d\n",*a ,*b);
}
int main(){
   int num=0;
   //printf("请输入数字?\n");
   //scanf("%d",&num);
   //odd_or_even(num);
   int a =10 , b= 20;
   swap(&a,&b);
}

应用2:
所有数中只有一个出现了一次,其他都出现了两次。那么把所有数字都异或就可以找到这个数。

3.3 |

#define red 1
#define blue 2
#define color red|blue \\这里的color=3

4 赋值操作符

=
以及复合赋值符, +=等

5 单目运算符

  • 逻辑反操作:!
  • 负数操作:-,与负数对应的+
  • 取地址操作:&
  • 间接访问操作:*,和指针一起使用,用于访问指针所指向的值。
  • sizeof操作符:用于得到操作数的类型长度,以字节单位。 sizeof(init) 或者不加括号 sizeof int都可以。
  • 强制转换操作符:(类型),如果要对表达式进行转换,必须要把表达式括起来。
  • 增值操作/减值操作:++/–,使用的时候看操作符在前还是后,如果在前那么先执行操作符,再赋值。赋值时都是复制一份变量值的拷贝,然后修改拷贝,原先的值时不变的。

6 关系运算符

= < <= != ==

7 逻辑操作符

|| 和 &&
先判断前面的表达式,如果前面不符合条件,那么后面的就不再判断,称为短路求值。

8 条件操作符

exp1 ? exp2: exp3//如果exp1为true那么执行exp2否则就执行exp3

9 逗号操作符


  • while(,)内部也可以执行多个表达式。当需要先执行一次那么就可以放到括号内。

10 下标引用/函数调用/结构成员

  • 下标
    array[下标]
    *(array + 下标)
  • ->操作,在用指针访问时取代.来操作访问结构体内部变量或者函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值