操作符是一种告诉编译器执行特定的数学或逻辑操作的符号,C 语言操作符是编程的基石,熟练掌握运算符的用法,是编写高效 C 程序的基础。本文将系统梳理 C 语言操作符的分类、优先级及常见误区,并通过示例代码助你快速掌握。
一.算术操作符
a与b是两个操作数
算术操作符 | 描述 |
---|---|
+ | 把两个操作数相加 |
- | 从第一个操作数中减去第二个操作数 |
* | 把两个操作数相乘 |
/ | 分子除以分母 |
% | 取模运算符,整除后的余数 |
注意:1.除号的两端都是整数的时候执行的是整数的除法,两端只要有一个浮点数,就执行浮点数 的除法;
2.%取模两端必须为整数 。
int a = 8 / 3;
int b = 8 % 3;
printf("%d\n",a);//2
printf("%d\n",b);//2
float a = 8 / 3.0;
int b = 8 % 3;
printf("%.2f\n", a);
printf("%d\n", b);
二.赋值操作符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 |
+= | 加且赋值运算符,把左边操作数加上右边操作数的结果赋值给左边操作数 |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 |
*= | 乘且赋值运算符,把左边操作数乘以右边操作数的结果赋值给左边操作数 |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 |
int a = 1;
a += 3;
printf("%d\n",a);//4
三.单目操作符
序号 | 运算符 | 描述 |
1 |
!
| 逻辑反操作 |
2 | - | 负值 |
3 | + | 正值 |
4 | & | 取地址 |
5 |
sizeof
| 操作数的类型长度(以字节为单位) |
7 | -- | 前置、后置-- |
8 | ++ | 前置、后置++ |
9 |
*
| 间接访问操作符(解引用操作符) |
10 | (类型) | 强制类型转换 |
1.!
!称为逻辑非运算符,用来逆转操作数的逻辑状态,如果条件为真则逻辑非运算符将使其为假。
2.-、+
int a = -1;
int b = -a;
printf("%d\n",b);//1
3.&(此处定义为取址符号)
int a = 0;
printf("输入数a:");
scanf("%d",&a);
4.sizeof
返回变量的大小,即返回操作数的类型长度(以字节为单位)
printf("%d\n",sizeof(char));//1
printf("%d\n", sizeof(short));//2
printf("%d\n", sizeof(int));//4
printf("%d\n", sizeof(long));//4
printf("%d\n", sizeof(long long));//8
printf("%d\n", sizeof(float));//4
printf("%d\n", sizeof(double));//8
int a = 5;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof a);
printf("%d\n", sizeof int);//错误写法
int arr[10] = { 0 };
printf("%d\n",sizeof(arr));//40
printf("%d\n",sizeof(arr[0]));//4 0是指数组中的元素
printf("%d\n",sizeof(arr)/sizeof(arr[0]));//10 -- 数组的元素的个数
5.--、++
++为自增运算符,整数值增加 1,--为自减运算符,整数值减少1,当为后置++或--时,先使用后运算;当为前置时,先运算后使用。
int a = 1;
int b = a++;//后置++
printf("%d\n",b);//1
printf("%d\n",a);//2
int a = 5;
int b = --a;//前置--
printf("%d\n",b);//4
printf("%d\n",a);//4
6.(类型)
可以通过该运算符将浮点数强制转换为整型
int a = 1.1//错误
int a = (int) 1.1;
printf("%d\n", a);//输出1
四.逻辑操作符
1.&&——逻辑与
&&称为逻辑与操作符,如果两个操作数都非零,则条件为真。
int a = 1;
int b = 2;
if(a && b)
printf("Yes\n");
若两个操作数中至少有一个为0,或者两个都为0,则为假。
2.||——逻辑或
||称为逻辑或操作符,如果两个操作数中有任意一个非零,则条件为真。
若两个操作数均为0,则条件为假
五.条件操作符
exp1 ? exp2 : exp3 :又称为三目操作符,当条件1为真时,整个表达式的结果为表达式2的结果;当条件1为假时,整个表达式的结果为表达式3的结果。
int a = 10;
int b = 20;
int r = a > b ? a:b;
printf("%d\n",r);//20
六.逗号表达式
exp1,exp2,exp3,......,expN :逗号表达式就是用用逗号隔开的一串表达式,逗号表达式的特点是从左向右依次计算,整个表达式的结果是最后一个表达式的计算结果。
int a = 10;
int b = 20;
int c = 0;
int d = (c = a - 2, a = b + c, c - 3);
printf("%d\n",d);//5
以上内容为初学阶段所涉及到的,涉及其他的将在后续内容更新!!!