算数操作符
+ - * / %
/ 除号的两端都是整数时,执行的是整数除法;如果两端只要只有一个浮点数就执行浮点数的除法。(“%f”单浮点,“%0.2f”小数点后保留两位)
% 取模 操作符的两端必须是整数
int main()
{
float a=7/2;
int b=7/2;
printf("%0.2f\n",a);
printf("%d\n",b);
return 0;
}
移位操作符
>> <<
位移操作符
& ^ |
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
int main()
{
int a=0;\\初始化
int b=0;
a=a+3;
b-=3;
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作符的类型长度
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr[0]));
printf("%d\n", sizeof(arr)/sizeof(arr[0]));
return 0;
}
~ 对一个数的二进制接位取反
-- 前置、后置--
++前置、后置++
#include<stdio.h>
int main()
{
int a = 10;
int b = a++;
printf("%d\n", b);
printf("%d\n", a);
return 0;
}
* 间接访问操作符
(类型) 强制类型转换
#include<stdio.h>
int main()
{
int a = (int)3.1515;
printf("%d\n", a);
return 0;
}
关系操作符
>
>=
<
<=
!=用于测试“不相等”
==用于测试“相等”
逻辑操作符
&& 逻辑与
|| 逻辑或
#include<stdio.h>
int main()
{
/*int a = (int)3.1515;*/
int a = 10;
int b = 0;
if (a || b)
{
printf("lll\n");
}
return 0;
}
其中 0为假,非零为真
条件操作符(三目操作符)
exp1 ? exp2 :exp3
真 真 假
假 假 真
#include<stdio.h>
int main()
{
/*int a = (int)3.1515;*/
int a = 10;
int b = 0;
/*if (a || b)
{
printf("lll\n");
}
*/
int r = (a > b ? a : b);
printf("%d\n", r);
return 0;
}
逗号表达式
exp1,exp2,exp3,exp4,exp5,... expn
特点:从左向右依次计算,整个表达式的结果是最后一个表达式的结果
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int c = 0;
int d = (c = a - 2, a = b + c, c - 3);//输出结果为最后一项的结果
printf("%d\n", d);
return 0;
}
下标引用、函数调用、结构成员
[ ] () . ->
[ ]下标引用
#include<stdio.h>
int main()
{
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int n = 3;
printf("%d\n", n);
return 0;
}
()函数调用操作符
#include<stdio.h>
int add(int x, int y)
{
return (x+y);
}
int main()
{
int a = 10;
int b = 15;
printf("%d\n", add(a, b));
//add 10 15都是()的操作数
return 0;
}