本篇继续介绍操作符
目录
- 单目操作符
6.1 单目操作符介绍
6.2 sizeof 和 数组
6.3 ++ 和 - - 运算符
- 关系操作符
- 逻辑操作符
- 条件操作符
- 逗号表达式
- 下标引用、函数调用和结构成员
11.1 下标引用
11.2 函数调用
11.3 访问一个结构的成员
总结
)
- 单目操作符
6.1 单目操作符介绍
操作符 功能
! 逻辑反操作
- 负值
- 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-
- 前置,后置- -
++ 前置,后置++
- 间接访问操作符
(类型) 强制类型转换
代码演示:
include<stdio.h>
int main()
{
int a = -10;
int* p = NULL;
printf("%d\n", !2);
printf("%d\n", !0);
a = -a;
p = &a;
printf("%d\n",sizeof(a));
printf("%d\n", sizeof a);
printf("%d\n", sizeof(int));
//printf("%d\n", sizeof int);报错
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
运行结果:
可以看出int型长度为4个字节
代码演示:
include<stdio.h>
int main()
{
int a = -10;
printf("%d\n", sizeof a);
printf("%d\n", sizeof int);//报错
return 0;
}
1
2
3
4
5
6
7
8
注意:第七行报错,应输入表达式printf("%d\n",sizeof(int));,不带括号时只可以输入单个字符
6.2 sizeof 和 数组
代码演示:
include <stdio.h>
int main()
{
int a = 0;
int arr[3] = {1,2,3};
char str[] = "hello";
int length=sizeof(arr)/sizeof(int);
int len_a = sizeof(a);
int len_arr = sizeof(arr);
int len_str = sizeof(str);
printf("len_a=%d\n",len_a);
printf("len_arr=%d\n", len_arr);
printf("len_str=%d\n", len_str);
printf("length=%d\n",length);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
运行结果:
可以看出:数组长度=数组占内存空间/单个元素所占空间
6.3 ++ 和 - - 运算符
前置++和- -
代码演示:
include <stdio.h>
int main()
{
int a = 0;
int x = ++a;
int y = --a;
printf("%d\n",x);
printf("%d\n",y);
return 0;
}
1
2
3
4
5
6
7
8
9
10
运行结果:
分析:
在int x = ++a;中,先对a 进行自增,然后使用a,也就是表达式的值是a自增之后的值,同理,int y = --a;中,a先自减,再使用
后置++和- -
先使用a,再增加。即上例int x = ++a;中,先使用 a = 0,再增加 a = 1,即 x = 0 , y = 1