程序=算法+数据,而程序又是由表达式组成的,表达式是由运算符与数据组成的。
运算符:
1、求空间长度运算符: sizeof 注:不要当成函数了!
2、赋值运算符: 左值=右值 将右值赋值给左值
注意:1、隐式转换:编译器是不能直接运算不同类型间的数据,必须转换为同类型方能运算。
整形=浮点型; 取整数部分赋值给整形
int a;
float pi=3.14;
a = pi;
printf("%d\n",a);
char-(int)->int-(float/double)->double (低字节向高字节转换)
2、溢出
3、算数运算符: + - * / % 优先级:* / % 》+ - 结合方向:自左向右
printf("%d\n",2.1%2); //error! %只对整形数据 int%int
4、位运算符:(bit级的操作) 右移>> 左移<< 按位与& 按位或| 异或^ 取反~
5、判定运算符: > < >= <= != ! == 结果:真1/假0
short a=2;
short len=a>>1;
printf("a=%d len=%d\n",a,len);
short c=1;
len=c<<2;
printf("c=%d len=%d\n",c,len);
short i=7;
short j=2;
len=i&j;
printf("i=%d j=%d len=%d\n",i,j,len);
6、自增自减运算符: ++ --
前自增++i(先自增再取值),后自增i++(先取值再自增)
int i=0,j=0;
int resulse = i++ && j++; //有陷阱
printf("i=%d,j=%d,result=%d\n",i,j,result);
i=0;j=0;
result = ++i && ++j;
printf("i=%d,j=%d,result=%d",i,j,result);
i=0;j=0;
result = i++ || j++;
printf("i=%d,j=%d,result=%d",i,j,result);
i=0;j=0;
result = ++i || ++j; //有陷阱
printf("i=%d,j=%d,result=%d",i,j,result);
7、三目运算符: 表达式1?表达式2:表达式3
表达式1为真,则取表达式2,为假则取表达式3
8、逗号运算符: 表达式1,表达式2,表达式3,...表达式n(从右向左依次执行)
运算结果结果:取表达式1的结果