【C语言基础自学课程】 02- 运算符和表达式

算术运算符

%  ----  求余,左右两边必须都是整数求余

tips:    od -c xxx.c > yyy.txt  -------帮助查找\211 \357之类的错误字符(中文)

关系运算符
逻辑运算符

注意:非0即真

位运算符 

  • &     按位与
  • |      按位或。有1结果为1,全0结果为0
  • ^     按位异或 。相同结果为0,不同结果为1
  • ~     按位取反    
  • <<  左移
  • >>  右移

(1)对于无符号数,

  • 左移:移出的位丢弃,右边补0;
  • 右移:移出的位丢弃,左边补0。

unsigned short a = 0x87;
    a<<2
0000 0000 1000 0111----135
0000 00 1000 011100----540

unsigned char a = 0x87;
a>>2
1000 0111
001000 01

(2)对于有符号数,

  • 左移:保持符号位不变,移出的位丢弃,右边补0;
  • 右移:保持符号位不变,移出的位丢弃,左边补符号位

a = -3  (以补码的形式存在,先写出二进制原码,再转换为反码,然后补码,再进行移位运算)
1 000 0011  ---原码
1 111 1100    --反码
1 111 1101    补码
a<<1
1 11 1 1010

a>>1
1 1 111 110

练习:

1.把4个无符号的char变量,组合成一个无符号的int变量
    0x21 0x43 0x65 0x87   ---->0x87654321

2.交换两个整型变量a b的值,不允许用第三个中间变量
    + -      a = a+b;b=a-b;a=a-b;
    */        a = a*b;b=a/b;a=a/b;    
    ^        a^b^b <--->a  a = a^b;b=a^b;a=a^b;


赋值运算符

  • +=  
  • -=
  • /=
  • %=
  • &=
  • |=

唯一的一个三目运算符     ?   :

练习:
    输入三个整数,利用 ?:找出最大值,并打印输出
    (a > b ? a : b ) > c ? (a > b ? a : b ):c


其它特殊运算符

(1)sizeof
sizeof 变量|常量      sizeof a
sizeof (变量|常量)    sizeof(a)
sizeof (int)----如果是数据类型,要加括号()

(2)&,取地址运算符

int *p;
*p
/* xxxxx*/-----注释

 

(a=3,b=5,c=6)

你可能感兴趣的:(C语言基础,C语言,运算符)