02 C Operator
运算符
位操作符
| 位操作符 | 语法 | 样例 |
|---|---|---|
| 按位与 & | Expr1 & Expr2 | 0011 & 1001 = 0001 |
| 按位或 | | Expr1 | Expr2 | 0011 | 1001 = 1011 |
| 按位异或 ^ | Expr1 ^ Expr2 | 0011 ^ 1001 = 1010 |
| 按位取反 ~ | ~Expr | ~0011 = 1100 |
| 按位左移 << | Expr1 << Expr2 | 5 << 2 = 20 (十进制) |
| 按位右移 >> | Expr1 >> Expr2 | 20 >> 2 = 5 (十进制) |
样例
//按二进制输出某数的低16位
#include <stdio.h>
int main()
{
int num, mask, i;
printf("Input an integer number: ");
scanf("%d", &num);
/*构造最高位为1、其余各位为0的整数(屏蔽字)*/
mask = 1 << 15;
printf("%d = ", num);
for (i = 1; i <= 16; i++)
{
/*输出最高位的值(1/0)*/
putchar(num & mask ? '1':'0');
num <<= 1; /*将次高位移到最高位上*/
if (i % 4 == 0)
putchar(', '); /*四位一组,用逗号分开*/
}
printf("\bB\n");
}
逻辑操作符
优先级:! > && > ||
条件操作符
Expr1 ? Expr2 : Expr3
max = (a > b) ? a++ : ++b;
若a=4,b=0,则a等于5,b等于0,max等于4
若a=0,b=1,则a等于4,b等于2,max等于2
类型转换
隐式类型转换
int a=1;
double b=a*0.5;
强制类型转换
(Type) Expr

浙公网安备 33010602011771号