Linux编程之C语言

2025-04-13 10:58:10

1、赋值运算符^= 异或后赋值a ^=b === a=a^b挢旗扦渌;位操作符位异或 ^按二进制位进行比较,如果对应位不相同就为1, 相同就为0如 unsigned char val = 10; val ^ 0x01 ==》 0000 1010^ 0000 0001 0000 1011unsigned 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的值赋给b3) 利用加减法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位为0val & 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 1short 2int 4float 4long 8double 8long double 16bool 1 <stdbool.h>常用于数组的大小、结构体等类型大小? : C语言唯一的三目运算符 判断条件 ?条件为真时执行的语句 : 条件为假时执行的语句例子:用一个表达式得到a和b中比较大的值a>b ? a : ba大于b吗?如果是则a : 否则b就是 if ... else....的精简版if(a>b)max = a;elsemax = 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。
相关推荐
  • 阅读量:30
  • 阅读量:67
  • 阅读量:94
  • 阅读量:66
  • 阅读量:32
  • 猜你喜欢