1.单目运算符
! | 逻辑反操作符 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
-- | 前置、后置 |
++ | 前置、后置 |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
1.1逻辑反操作符!
C语言中0为假,非0为真
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a= 0;
printf("a=%d",!a);//!把真变为假,假变真,输出结果为a=1
return 0;
}
1.2负值和正值
-操作符可以使负数变为正数,正数变为负数
+操作符不会改变数的符号,正数还是正数,负数还是负数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 15;
int b = -a;
int c = +a;
printf("b=%d c=%d\n", b, c);//b=-15 c=15
a = -15;
b = -a;
c = +a;
printf("b=%d c=%d\n", b, c);//b=-15 c=15
return 0;
}
1.3取地址&
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int sum ;
scanf("%d%d",&a,&b);//把输入的两个数存到a,b两个变量所在的地址中
sum = a + b;
printf("sum=%d\n", sum);
return 0;
}
1.4操作数的类型长度(以字节为单位)sizeof
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
int a = 10;
int arr[] = { 1,2,3,4,5,6 };
printf("%d\n",sizeof(a));//a是int类型,为4个字节
printf("%d\n",sizeof(int));//
printf("%d\n",sizeof(arr));//arr数组中有6个int类型的元素,为24个字节
printf("%d\n",sizeof(arr)/sizeof(arr[0]));//可以判断arr数组中的元素有6个
return 0;
}
1.5对一个数的二进制按位取反~
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = ~a;
//原码、反码、补码
//负数在内存中存储的时候,存储的是二进制的补码
printf("%d\n", b);
//打印的是这个数的原码,0的符号位是+,即00,按位取反得到11,即-1
return 0;
}
1.6前置、后置(-- 、++)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 10;
int b = ++a;//前置++,先++,再使用
printf("a=%d b=%d\n", a, b);//a=11,b=11
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 10;
int b = a++;//后置++,先使用,再++
printf("a=%d b=%d\n", a, b);//11 10
return 0;
}
--与++运算相同
1.7间接访问操作符(解引用操作符*)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 10;
int* p = &a;//取地址
*p = 20;//把地址内面的内容赋值为20
printf("%p\n", &a);
printf("%p\n", p);
printf("%d\n", a);
return 0;
}
1.8强制类型转换
第5行代码,使a原本为double的类型,强行转变为int类型
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = (int)3.14;
printf("%d\n",a);//输出a=3
return 0;
}
2.关系操作符
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
!= | 不等于 |
== | 等于 |
3.逻辑操作符
&& | 逻辑与 |
|| | 逻辑或 |
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//0表示假,非0为真
int a = 3;
int b = 5;
int c = a && b;
printf("c=%d\n", c);//c=1
return 0;
}
4.条件操作符
exp1 ? exp2 : exp3
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int max = 0;
max = (a > b ? a : b);
/*if (a > b)
max = a;
else
max = b;*/
printf("max=%d\n",max);
return 0;
}
5.逗号表达式
exp1,exp2,exp3,exp4
6.下标引用、函数调用和结构成员
[ ] 下标引用操作符
( ) 函数调用操作符
. ->