1.了解什么是表达式:表达式是由运算符与数据组成的式子,每一个表达式都有运算的结果。
2.我的老师每次使用这个运算符的时候都会说到这个老梗,sizeof是运算符不是函数,别看sizeof后面还要加一个括号,但不是所有的都是函数。这也从侧面sizeof在面试题中经常出现。
3.隐式转换类型:由于有的编译系统是不能直接运算不同类型间的数据,必须要转换成同类型才能转换。
简单的有 整形=浮点型。将浮点型赋值给整形时只会取整数部分。另一些情况就较为复杂了。
例如
int a=100;
char b=97;
float c=3.14;
short result=a+b;
printf("%d\n",result);//输出的结果为197,可以理解为char类型就是int类型的一种,更准确的说是char类型遇到int 类型的时候会转换为int 类型。
float result=a+c;
printf("%f\n,"result);//输出结果为103.14,原因是int类型遇到float或者是double类型都会转化成double。其实平常使用float类型的时候,系统为了提高精度,都会将float当成double使用除非指定使用类型为float
4.位运算:位运算符包括 << 左移 >>右移 & 按位与 | 按位或 ^按位异或 ~按位取反
1.位 的左移与右移
举一个很简单的例子:
short i=4;
i=i>>1;//i的输出值为2而不是3,位的移位运算方法是将数值转换为二进制 4:00000000 00000100,所有的位向右移一个单位,空出来的部分再由0补齐。结果就是0000000 00000010。再转换为十进制结果为2.
2.按位与和按位或
按位与和按位或是两个二进制数每一位对应进行与或者或运算。
例题:将0101 110 0110 1010 的第5-8位修改为10110
unsigned short num=22122;
short a=0xb<<4;
short b=0xf<<4;
unsigned short result=num&(~b)|a;
3,按位异或和按位取反
按位异或 ^ 按位异或之后将相同的位变成0,不同的位变成1
按位取反 ~ 0变成1,1变成0