江苏建设人才网官方网站,网站 横幅,wordpress没有链接地址,莱芜网络推广公司提供移位表达式
左移操作符 左边抛弃,右边补零
右移操作符 1.逻辑右移 左边补零,右边丢弃 2.算数右移 左边补符号位,右边丢弃
注意: 1.左移一位相当于乘2,右移一位相当于除2,并且在内存中存放的是二进制的补码,且移位操作符只对int型数操作 2.移位操作符不要移动…移位表达式
左移操作符 左边抛弃,右边补零
右移操作符 1.逻辑右移 左边补零,右边丢弃 2.算数右移 左边补符号位,右边丢弃
注意: 1.左移一位相当于乘2,右移一位相当于除2,并且在内存中存放的是二进制的补码,且移位操作符只对int型数操作 2.移位操作符不要移动负数位,这个标准未定义
位操作符 //按位与
| //按位或
^ //按位异或
注:操作数必须是整数,并且是补码**
a a 0;
a 0 a;
举例: 将0000 0000 0011 1111从右往左数的第5位的1变为0 解:0000 0000 0011 1111 1111 1111 1110 1111 0000 0000 0011 1111 将0000 0000 0011 1111从右往左数的第7位的0变为 1 0000 0000 0011 1111 | 0000 0000 0100 0000 0000 0000 0111 1111
赋值操作符
int x 0;
int x 10;
符合赋值符 -
*
/
%|
^
单目操作符
! //逻辑反操作
- //负值//正值//取地址
sizeof //不是函数
~ //二进制数按位取反
--(类型) //强制类型转换** temp a;是先加1,再使用,等价于 a a 1,temp a; a ;先使用,后加1,相当于 temp a, a a 1;
**int a[10] {0}; //32位
sizeof(a) //40
sizeof(a) //4
a //表示整个数组的地址,表示整个大小,加1则会在内存中跳过整个数组
a //表示数组首元素的地址,加1则是跳过一个数组元素**
//sizeof(表达式) /*表达式的结果不计算,因为sizeof在编译时就有,而当a,和b是全局变量时,他们的创建是在程序执行是才创建,所以,sizeof()中括号的值不看值,只看它的类型*/
关系操作符 ! 逻辑与逻辑或 逻辑与:当遇到一个表达式为0,后面的都不计算,整个表达式为0 逻辑或:当遇到一个表达式为1,后面的都不计算,整个表达式为1
条件操作符
exp1 ? exp2 : exp3
等价于
if(exp1)
{
exp2
}
else
{
exp3
}
逗号表达式
exp1,exp2,exp3.../*表达式计算时从左到右计算,但整个表达式的值为最右边的表达式的结果,计算时必须计算左边的表达式,因为左边有可能会影响右边表达式的值*/
下标引用 函数调用及结构成员
1.[] 操作数: 一个数组名 一个索引值
int arr[9] {0}; //类型为int [9],类型为去掉变量名剩下的都是类型
[]的操作数为两个 arr和9
2.() 函数调用操作符,接受一个或多个操作数,第一个为函数名,其余都是参数
3.访问一个结构的成员 .结构体.成员名 -结构体指针-成员名
注意:
#includestdio.h
int main()
{int arr[] {0};scanf (%d,arr); //arr为数组首地址的值,当arr 1时,数组值跳过数组的一个元素的地址scanf(%d,arr); //arr为数组的地址,当arr 1时,数组在内存中便会跳过整个数组sizeof(arr); //4sizeof(arr); //40//sizeof(数组名)此时的数组名表示的是整个数组return 0;
}