简单不先于复杂,而是在复杂之后。
目录
几乎每一个程序都需要进行计算,对数据进行加工处理,否则程序就没有意义了。要进行运算,就需规定可以使用的运算符。C语言的运算符范围很宽,把除了控制语句和输入输出以外几乎所有的基本操作都作为运算符处理。
算数操作符
+ - * / %
int main()
{
//除号两端都是整数时执行的是整数除法,只要有一端是浮点数就执行浮点数的除法
int a = 7 / 2;
printf("%d\n", a);//打印结果3
float c = 7 / 2.0;
printf("%.1f\n", c);//打印3.5(小数点后一位)
int b = 7 % 2;//取模(7/2得到的余数)
//取模操作符两端只能是整数
printf("%d\n",b);//打印结果1
return 0;
}
移位操作符
>> <<
//涉及二进制计算
位操作符
& - 按位与
^ - 按位异或
| - 按位或
赋值操作符
=
int a = 0;
//创建变量时赋值叫初始化
a = 0;//赋值
+=
a = a + 3;
a += 3;//简化
-=
a = a - 3;
a -= 3;
*=
/=
&=
^=
|=
>>=
<<=
单目操作符
a + b;
+ 双目操作符
单目操作符 - 只有一个操作数的操作符
! - 逻辑反操作(真假互变)
C语言中0表示假,非0表示真
int main()
{
int a = 0;
if(!a)
{
printf("hehe\n");//打印hehe,若a非0则反之
}
return 0;
}
- 正负互变
int main()
{
int a = -10;
int b = -a;
printf("%d\b", b);
//打印结果为10
return 0;
}
+ 正值
& 取地址
sizeof - 操作数的类型长度(单位是字节)
int main()
{
int a = 10;
printf("%d\n", sizeof(a));//打印4 (一字为两字节)
printf("%d\n", sizeof(int));//打印4
printf("%d\n", sizeof a);//sizeof 不是函数,()可以省略
printf("%d\n", sizeof int);//语法不支持,类型()不能省略
int arr[10] = {0};
printf("%d\n", sizeof(arr));//打印40, 计算整个数组的大小
pritnf("%d\n", sizeof(arr[0]));//打印4
printf("%d\n", sizeof(arr)\sizeof()arr[0]);计算数组中的元素个数
return 0;
}
~ 对一个数的二进制按位取反
++ 前置、后置++
-- 前置、后置--
int main()
{
int a = 10;
int b = a++;\\后置++,先使用,后++
//int b = a; a = a + 1;
printf("%d\n", a);打印11
printf("%d\n", b);打印10
int a = 10;
int b = ++a;
//a = a + 1; b = a;
printf("%d\n", a);//打印11
printf("%d\n", b);//打印11
return 0;
}
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
int main()
{
int a = (int)3.14;
//字面浮点数,编译器默认为double
printf("%d\n", a );//打印结果3
return 0;
}
关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
逻辑操作符
&& 逻辑与 - 并且
|| 逻辑或 - 或者
int main()
{
int a = 10;
int b = 20;
if(a && b)
{
printf("hehe\n")
}
return 0;
}
条件操作符(三目操作符)
exp1 ? exp1 : exp2
int main()
{
int a = 10;
int b = 20;
int c = a > b? a :b;
printf("%d\n", c);//打印20
return 0;
}
逗号表达式
exp1, exp2, exp3······expN
//由逗号隔开的一串表达式
//逗号表达式的特点是:从左向右依次计算,整个表达式的结构是最后一个表达式的结构。
int main()
{
int a = 4;
int b = 9;
int c = 0;
// c = 2 a = 11 -1;
int d = (c = a-2, a = b + c; c - 3);
printf("%d\n", d);//打印-1
return 0;
}
下标引用操作符
[]
int main()
{
int arr[10] = {0, 1, 2, 3, 4, 5, 6, ,7, 8, 9};
arr[3] = 100;
//就是下标引用操作符,arr和3就是[]的操作数
int n = 4;
arr[n] =20;
return 0;
}
函数调用操作符
() 函数调用操作符
int Add(int x, int y);
{
return x + y;
}
int main()
{
int sum = Add(3,4);//Add,3,4都是()的操作数
return 0;
}