符号:+ - * / %
注释:
+ :用于整数和浮点数的加法
- :用于整数和浮点数的减法
* :用于整数和浮点数的乘法
/ :用于整数和浮点数的除法
% :用于两整数相处取余数
注意:
1.除了%操作符之外,其他的几个操作符可以用于整数和浮点数。
2.对于/操作符如果两个操作符都为整数,执行整数除法,而只要有浮点数执行的就是浮点数除法。
3.%操作符的两个操作数必须是整数,返回的是整除后的余数。
符号:<< >>
注释:
<< :左移位操作符
>>:右移位操作符
注意:移位操作符的操作数只能是整数
移位规则:
左边抛弃,右边补0,相当于*2
移位规则:
右移操作符分两种:
1.逻辑移位
左边用0填充,右边丢弃
1.算术移位
左边用原该值的符号位补充(第一位0表示正数,1表示负数),右边丢弃,编译器中通常是算术移位,有除以2的效果
补充:数据的存储
数据在内存中是以2进制的形式储存的,对于整数而言,整数的二进制有3种表示形式:原码,反码,补码。
正整数:原码,反码,补码相同
负整数:原码,反码,补码不同,要进行计算。负整数在内存中存储的是二进制的补码,打印的是这个数的原码。
1.按照数值直接写出的是二进制的原码
2.原码的符号位不变,其他位按位取反,就得到了反码
3.反码+1就是补码
例:-10的原码:1000 0000 0000 0000 0000 0000 0000 1010
1111 1111 1111 1111 1111 1111 1111 0101–>-10的反码(符号位不变,其余位全部按位取反)
1111 1111 1111 1111 1111 1111 1111 0110–>补码(反码+1就是补码)
符号:& | ^
注释:
& :按位与 :二进制位与二进制位 (有一个为假,则为假)
| :按位或:二进制位与二进制位 (有一个为真,则为真)
^ :按位异或:对应的二进制位相同,则为0 。对应的二进制位相异,则为1。
注:他们的操作必须是整数
例1:
注:num1:0000 0000 0000 0000 0000 0000 0000 0010
num2:0000 0000 0000 0000 0000 0000 0000 0001
num1 & num2:0000 0000 0000 0000 0000 0000 0000 0000—>十进制表示:0
num1 | num2:0000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:3
num1 ^ num2:0000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:3(相同为0,相异为1)
例2:
注:num1 的原码:1000 0000 0000 0000 0000 0000 0000 0011
num1的反码:1111 1111 1111 1111 1111 1111 1111 1100
num1的补码:1111 1111 1111 1111 1111 1111 1111 1101
num2的原码:1000 0000 0000 0000 0000 0000 0000 0001
num2的反码:1111 1111 1111 1111 1111 1111 1111 1110
num2的补码:1111 1111 1111 1111 1111 1111 1111 1111
num1 & num2(补码):1111 1111 1111 1111 1111 1111 1111 1101
num1 & num2(反码):1111 1111 1111 1111 1111 1111 1111 1100
num1 & num2(原码):1000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:-3
符号:简单赋值符: =
复合赋值符:+= -= *= /= %= >>= <<= &= |= ^=
int a = 1;
a = 2;//简单赋值操作
double b = 3.0;
b = 10.0 //简单赋值
int a = 5;
a = a + 5;
a += 5;//复合赋值符
int b = 3;
b = b - 1;
b -= 1//复合赋值符
5.单目操作符
5.1单目操作符介绍符号:
! --------逻辑取反
- --------负值
+ --------正值
& --------取地址
sizeof --------操作数的类型长度
~ --------对一个二进制按位取反
- - --------前置,后置- -
++ --------前置,后置++
* --------解引用操作符
&(取地址):
int a = 1;
int *pa = &a;//将变量a的地址保存在变量pa中,
//pa指向a,此时pa是一个指针变量
- -(前置,后置),++(前置,后置):
int a = 1;
int b = a++ // a = 2; b = 1 后置++:先使用,后++
int d = 2
int c = ++d// d = 3;c = 3 前置++:先++,后使用
*(解引用):
5.2sizeof和数组sizeof(求操作数类型长度):
int a = 1;
printf("%d\n",sizeof(a));//result:4(字节)
printf("%d\n",sizeof(int));//result:4(字节)
printf("%d\n",sizeof a);//result:4(字节)
printf("%d\n",sizeof int);//错误:求类型的长度不能去掉括号
sizeof:求变量(类型)所占空间的大小
符号:> >= < <= != ==
注意:1.编写程序代码时一定要注意 = 和== 的区别,不要写错,= 是赋值操作,而 == 才是判断
2.判断字符串是否相同时,应该用strcmp()函数,而不能用==比较
符号:&& ||
&& ------------逻辑与操作(只要有一个表达式为假便为假,不再执行后面的表达式)
| | ------------逻辑或操作(只要有一个表达式为真便为真,不再执行后面的表达式)
区分逻辑与和按位与
区分逻辑或和按位或
1 && 2 = 1;//逻辑与,两个全真结果才为真
1 & 2 = 0;//按位与(按二进制计算)
1 || 2 = 1;//逻辑或,只要有一个为真便为真
1 | 2 = 3;//按位或(按二进制计算)
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧