操作符
文章目录
c语言提供了非常丰富的操作符,使得用起来就比较灵活。
1.简单介绍
算法操作符
+ - * / %
/ 是除后取整,% 是除后取余
#include <stdio.h>
int main() {
int a = 7;
int b = 2;
//除号的两端都是整数的时候执行整数除法
int c = a / b;
int f = a % b;//取模(取余)
//如果两端只要有一个浮点数就执行浮点数除法
float e = a /2.0;
printf("%d\n", c);
printf("%.2f\n", e);//.2是取到小数点后两位的意思
printf("%d\n", f);
return 0;
}
移位操作符
>> <<
位操作符
& ^ |
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
关系操作符
> >= < <= != ==
双目操作符 + //
单目操作符 - 只有一个操作数的操作符
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的字符长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
-- | 前置、后置-- |
++ | 前置、后置++ |
* | 间接反问操作符(解引用操作符) |
(类型) | 强制类型转换 |
sizeof作为单目操作符与函数的区别:
调用sizeof可以不加括号,在语法允许的情况下。
#include <stdio.h>
int main() {
int a = 0;
printf("%d\n", sizeof(a));//输出:4
printf("%d\n", sizeof(int));//输出:4,int的大小必须要加括号,否则语法不允许
printf("%d\n", sizeof a);//输出:4,因为是单目操作符,所以括号可写可不写
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));//输出:40,整个数组的大小,单位是字节
printf("%d\n", sizeof(arr[0]));//输出:4,一个整型元素的大小
printf("%d\n", sizeof(arr) / sizeof(arr[0]));//输出:10,元素的个数
return 0;
}
1.2"++“和”–"前置与后置的区别
++ 和 --前置后置的自增规则,下方代码为自增,自减规律同下:
int main() {
int a = 10;
int b1 = a++;//输出:10,后置++,先赋值,后自增
int c = 10;
int d1 = ++c;//输出:11,前置++,先自增,后赋值
printf("%d\n", b1);
printf("%d\n", a);//输出:11
printf("%d\n", d1);
printf("%d\n", c);//输出:11
}
前置自增,先赋值后自增;后置自增,先自增后赋值。
2.强制类型转换
使用:(类型)数据,的格式进行强制类型转换
代码中,字面的浮点型系统会默认是double类型的,虽然不会报错
int e = 3.14;//字面的浮点型系统会默认是double类型的
int f = (int)3.14;//括号 类型 括号(类型),强制类型转换,这里将double类型转换为整型
printf("%d\n", e);
printf("%d", f);
2.1=与==的区别
“=” 为赋值,“==”才是判断
int g = 3;
if (g = 10) {
printf("这里的g=10是赋值,不是判断,所以g的值为:%d\n", g);
}
逻辑操作符
&& 逻辑与(两者都,为真)
|| 逻辑或(二者只要一个为真,就为真)
3.条件操作符及格式
格式:
exp1?exp2:exp3 //条件exp1满足的话,结果为exp2;条件不满足的话,结果为exp3
代码示例:
int a = 10;
int b = 20;
int r = (a > b) ? a : b;//a<b,条件为假,则结果为b
printf("%d", r);
//输出:20
4.逗号表达式
公式从左到右计算,计算结果为最右边的公式的结果
exp1,exp2,exp3……expn
例子:
int a = 6;
int b = 4;
int c = (a + b, a - b, a * b);//最后的结果为:a*b(最右边的公式)
printf("%d", c);
//输出:24
5.下标引用,函数调用和结构成员
[] () . ->
[] () . ->
5.1下标引用操作符"[]"
下标引用操作符是"[]“,但定义数组的”[]",不是下标引用操作符
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };//这里的[]是定义数组的符号,不是下标引用操作符
int a = 3;
printf("%d", arr[a]);//[]就是下标引用操作符,arr和3就是操作数
5.2函数调用操作符
函数调用操作符"()"
int add(int a, int b){
int z = a + b;
return z;
}
int main() {
int result = add(2, 3);//()就是函数调用的操作符,add,2,3就是()的操作数,括号不能省略
printf("%d", result);
return 0;
}
操作符,arr和3就是操作数
### 5.2函数调用操作符
函数调用操作符"()"
```c
int add(int a, int b){
int z = a + b;
return z;
}
int main() {
int result = add(2, 3);//()就是函数调用的操作符,add,2,3就是()的操作数,括号不能省略
printf("%d", result);
return 0;
}