五、操作符(C语言)
2026/6/5 5:15:33 网站建设 项目流程

1、算数操作符

(1)加+

(2)减-

(3)乘*

(4)除/

A 整数的除法

7/2

B 浮点型的除法

7.0/2 7/2.0 7.0/2.0

(5)取模%

int a = 7 % 2; //输出1 //%的前后必须为整数

2、移位操作符

移位操作符的操作数只能是整数。移位的是二进制数。

整数的二进制有三种:源码、补码、反码。正的整数原码、补码、反码相同;负的整数原码、补码、反码要计算。整数在内存中存储的是补码。

//7 //00000000000000000000000000000111-原码 //00000000000000000000000000000111-反码 //00000000000000000000000000000111-补码 //-7 //10000000000000000000000000000111-源码 //11111111111111111111111111111000-反码 //11111111111111111111111111111001-补码(反码+1)

(1)左移位操作符<<

正数左移

int main() { int a = 7; int b = a << 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //14 return 0; }

负数左移

int main() { int a = -7; int b = a << 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //-14 return 0; }

(2)右移位操作符>>

算数移位:右边丢弃,左边补原符号位。

逻辑移位:右边丢弃,左边补0。

正数右移

int main() { int a = 7; int b = a >> 1; printf("a=%d\n", a); //7 printf("b=%d\n", b); //3 return 0; }

负数右移(VS编译器使用算数右移)

int main() { int a = -7; int b = a >> 1; printf("a=%d\n", a); //-7 printf("b=%d\n", b); //-4 return 0; }

3、位操作符

(1)按位与&

整数的二进制数各位上两者都是1的,按位与后的补码也是1,其他是0

int main() { int a = 3; int b = -5; int c = a & b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //00000000000000000000000000000011 printf("c=%d\n", c); //3 return 0; }

(2)按位或|

整数的二进制数各位上只要出现1的,按位或后的补码是1,其他是0

int main() { int a = 3; int b = -5; int c = a | b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //11111111111111111111111111111011 printf("c=%d\n", c); //-5 return 0; }

(3)按位异或^

整数的二进制数各位上,相同的是0,不同的是1

int main() { int a = 3; int b = -5; int c = a ^ b; //00000000000000000000000000000011- 3 的补码 //10000000000000000000000000000101- -5 的原码 //11111111111111111111111111111010 //11111111111111111111111111111011- -5 的补码 //11111111111111111111111111111000 printf("c=%d\n", c); //-8 return 0; }

(4)位操作符的应用

不使用临时变量,实现两个整数的交换。

方法一:使用按位与、按位或。

int main() { int a = 3; int b = -5; printf("c1=%d\n", a & b); //3 printf("c2=%d\n", a | b); //-5 return 0; }

方法二:使用按位异或

int main() { int a = 3; int b = 5; a = a ^ b; //a=3^5 b = a ^ b; //b=3^5^5 —> b=3 a = a ^ b; //a=3^5^3 —> a=5 return 0; }

4、赋值操作符

=、+=、-=、&=、|=、^=、>>=、<<=

int main() { int a = 0;//初始化 int b = 0; b = 20;//赋值 a = a + 5; a += 5; a = a >> 1; a >>= 1; a = a - 1; a -= 1; return 0; }

5、单目操作符

(1)逻辑反操作 !

int main() { int flag = 3; if (!flag) printf("hehe\n"); else printf("xixi\n"); //输出xixi return 0; }

(2)负值 -

int a = -1;

(3)正值 +

int a = +1;

(4)取地址 &

int a = 3; int* p = &a;

(5)操作数的类型长度(单位:字节) sizeof

int a = 10; int n = sizeof(a);

(6)对一个数的二进制位取反 ~

int a = 0; printf("*d\n", ~a); //输出-1

(7)前置、后置 --

(8)前置、后置 ++

int main() { int a = 3; int b = ++a;//前置++,先++,后使用 printf("%d\n", a);//输出4 printf("%d\n", b);//输出4 }
int main() { int a = 3; int b = a++;//后置++,先使用,后++ printf("%d\n", a);//输出4 printf("%d\n", b);//输出3 }

(9)间接访问操作符(解引用操作符) *

int a = 10; int* p = &a; *p = 20;

(10)强制类型转换 (类型)

int a = (int) 3.14;
srand((unsigned int)time(NULL)); //time()函数的返回值类型为time_t

6、关系操作符

>、>=、<、<=、!=、==

7、逻辑操作符

(1)逻辑与 &&

两个条件都要满足才为真。

(2)逻辑或 ||

两个条件满足一个就为真。

int main() { int a = 3; int b = 0; int c = a && b; //并且 int l = a || b; //或者 printf("c=%d\n", c); //输出0 printf("l=%d\n", l); //输出1 return 0; }

8、条件操作符

if (a > 5) b = 3; else b = -3; (a > 5) ? (b = 3) : (b = -3);

9、逗号表达式

int a = 1; int b = 2; int c = (a > b, a = b + 10, a, b = a + 1); printf("%d\n", c); //输出13

10、下标引用、函数调用和结构成员

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询