Linux编程之C语言

2025-10-22 23:45:38

1、赋值运算符

^=    异或后赋值

a ^=b  ===  a=a^b;

位操作符

位异或  ^  

按二进制位进行比较,如果对应位不相同就为1, 相同就为0

如  unsigned char val = 10;

    val ^ 0x01 ==》     0000  1010

^  0000  0001

    0000  1011

unsigned  char a = 0x12;

unsigned  char b = 0xab;

unsigned  char  c = a^b ; ===> ?

unsigned  char  d = c^b ; ===> ?

unsigned  char  e = c^d ; 

见图

Linux编程之C语言

2、作用:1)用来比较全部位数是否相同,只有有一位不相同返回的就是非0;

         如果全部位都相同 返回0;

2)可以实现两数交换

unsigned  char a = 0x12;

unsigned  char b = 0xab;

   a = a^b ;// 新的a值为 0xb9

   b = a^b; // 新b为0x12

   a = a^b;//  新a为0xab

            还可以写成:

a^=b;

b^=a;

a^=b;

3、思考: 要实现两数的交换,可以想到几种方式?用代码确定效果 (3~~4种)

int  a = 0x12;

int  b = 0xab;

1) 异或

a^=b ;

b^=a;

a^=b;

2) 使用额外变量暂存

  int  temp ;

  temp = a ;

  a = b ;// 把b的值赋给a

  b = temp ;  // 把之前a的值赋给b

3) 利用加减法

a = a+b;

b = a-b;

a = a-b;

4) 利用乘除法

a = a*b;

b = a/b;

a = a/b;

4、如果在同一个表达式中, 对同一个变量进行了多次赋值, 结果是undefined的, 没有定义, 因为这个结果是有编译器的处理方式决定的

Linux编程之C语言

5、位反  ~

把数据的每一位都取反 (注意不是反码)

 char val = 100; // 0x64

~val ==>   ~0110 0100  ==》 1001 1011

常和位与、位或操作配合使用

例:要保证val的第3位为0

val & 0b11110111  ====== val &( ~0x08 )

6、其它运算符

sizeof()   计算对应的类型或者是变量所占用的空间大小,以字节为单位

printf( “int  is  %ld  Btyet(s) \n”, sizeof(int)) ;

int  a ;

printf( “int  is  %ld  Btyet(s) \n”, sizeof(a))

确认所有基本数据类型所占用的空间大小

char 1 

short 2

int  4 

float 4 

long 8 

double 8   

long double  16

bool   1         <stdbool.h>

常用于数组的大小、结构体等类型大小

?  :    C语言唯一的三目运算符

              判断条件 ?条件为真时执行的语句 : 条件为假时执行的语句

例子:用一个表达式得到a和b中比较大的值

a>b ? a : b 

a大于b吗?如果是则a : 否则b

就是 if ... else....的精简版

if(a>b)

max = a;

else

max = b;

7、练习:定义三个同类型变量a,b,c 分别赋值;

      通过一个表达式得到最大值,并打印出来

 

,  

         int a = (100 , 200);

最终a的值是200,因为()最后为200

 

运算符的优先级:(对应<C语言运算符优先级.pdf>)

[ ]   ( )

单目运算符

双目算术运算符和<<   >>

双目关系运算符

双目位运算     ( i & 0x01) == 0

双目逻辑运算

三目运算符

赋值运算符

8、补充及练习:如图

Linux编程之C语言

Linux编程之C语言

Linux编程之C语言

Linux编程之C语言

Linux编程之C语言

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:129
  • 阅读量:162
  • 阅读量:69
  • 阅读量:132
  • 阅读量:121
  • 猜你喜欢