算术操作符

+加  -减  *乘  /除商  %模余

浮点数得到小数(/商,double,%lf)


移位操作符(整数)

移动的是二进制位

不要移动负数位

 < < 左移操作符

左边丢弃,右边补0

>>右移操作符

1.算数右移:右边丢弃,左边补原符号位

2.逻辑右移:右边丢弃,左边补0


位操作符(整数)

    &   按位与(2进制位)

     |     按位或(2进制位)

    ^    按位异或(2进制位)相同为0,相异为1


赋值操作符(=)


符合赋值符

+=    -=   *=   /=   %=   >>=   <<=   &=   |=   ^=


单目操作符(只有一个操作数)

!逻辑反操作  -负值  +正值  &取地址  *解引用操作符  ~按位取反正(2进制位)

sizeof计算变量所占内存空间的大小,单位字节

--     ++前置、后置


关系操作符

>   >=    <    <=   !=    ==


逻辑操作符

    &&    逻辑与(左为假,后面不计算)

    ||        逻辑或(左为真,后面不计算)


条件操作符(三目操作符)

exp1?exp2:exp3


逗号表达式

从左往右依次计算,整个表达式的结果是最后一个表达式的结果。


[ ]下标引用操作符


( )函数调用操作符


struct结构体

创建一个结构体类型

struct duixiang

{

  char name[10];

  int age;

}

int main()

{

  struct duixiang n1 = {    };

  printf("%s\n",n1.name);

  struct duixiang* p = &n1;

  printf ("%s\n",(*p).name);

  printf ("%s\n",p->name);

}


表达式求值:

表达式求值的顺序是由操作符的优先级和结合性决定的。

隐式类型转换:

1.整型提升:先提示为普通整型,再进行运算。运算完成后,结果将被截断,然后再存储。有符号数看符号补,无符号数补0。

(+c,-c)会整型提升,为四个字节。

2.算术转换:

long double 

double

float

unsigned long int

long int

unsigned int

int

小的类型转换为大的类型再进行计算