多语言展示
当前在线:1965今日阅读:167今日分享:16

Linux编程之C语言

Linux编程之C语言热身
工具/原料
1

Ubuntu,

2

linux

方法/步骤
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 ; 见图

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的, 没有定义, 因为这个结果是有编译器的处理方式决定的

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 1 short 2int  4 float 4 long 8 double 8   long double  16bool   1          常用于数组的大小、结构体等类型大小 ?  :    C语言唯一的三目运算符              判断条件 ?条件为真时执行的语句 : 条件为假时执行的语句 例子:用一个表达式得到a和b中比较大的值a>b ? a : b a大于b吗?如果是则a : 否则b 就是 if ... else....的精简版if(a>b)max = a;elsemax = b;

7

练习:定义三个同类型变量a,b,c 分别赋值;      通过一个表达式得到最大值,并打印出来  ,           int a = (100 , 200);最终a的值是200,因为()最后为200  运算符的优先级:(对应)[ ]   ( )单目运算符双目算术运算符和<<   >>双目关系运算符双目位运算     ( i & 0x01) == 0双目逻辑运算三目运算符赋值运算符

8

补充及练习:如图

注意事项
1

“经验是茶,需要您去品!”

2

打击盗版

推荐信息