操作符
C语言中操作符是用于执行各种操作的符号
1.算术操作符
用于执行基本的数学运算,如加法(+)、减法(-)、乘法(*)、除法(/)和取模(%)
#include <stdio.h>
int main()
{
int a = 9 / 2;
printf("a=%d\n", a);
float b1 = 9 / 2;
printf("b1=%f\n", b1);//输出4.000000,没有小数点后面
float b2 = 9 / 2.0;//改为2.0即可
printf("b2=%f\n", b2);
int c = 9 % 2;//% - 取模(余数)
printf("c=%d\n", c);
return 0;
}
打印:
2.关系操作符
用于比较两个值,如等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
3. 逻辑操作符
用于执行逻辑运算,如逻辑非(!)、逻辑与(&&)、逻辑或(||)
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
int c = a && b; //&& - 逻辑与
printf("%d\n", c);
int x = 3;
int y = 0;
int z = x || y; //|| - 逻辑或
printf("%d\n", z);
return 0;
}
&& - 左右两边为真(1),则输出为真(1)
左右两边为假(0),则输出为假(0)
|| - 左右两边为真,则输出为真
左右两边有一个为假,则输出也为真
左右两边都为假,则输出为假
打印:
4. 位操作符
用于对位进行操作,如位非(~)、位与(&)、位或(|)、位异或(^)、位左移(<<)、位右移(>>)
#include <stdio.h>
int main()
{
int a = 2;
int b = a << 1;//<< - 左移操作符 - 移动的是二进制位
printf("%d\n", b);
return 0;
}
a = 2
2 的二进制 0010 左移一格 0100 为 4
打印:
5. 赋值操作符
用于赋值操作,如简单赋值(=)、加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)、取模赋值(%=)、位与赋值(&=)、位或赋值(|=)、位异或赋值(^=)、位左移赋值(<<=)、位右移赋值(>>=)
int a = 5;
a = a + 5; 或 a += 5;//= 赋值
同理 a = a - 3; 或 a -= 3;
a = a % 3; 或 a %= 3;
6. 条件操作符(三目操作符)
用于基于条件执行操作
格式为 `表达式1 ? 表达式2 :表达式3`
exp1 ? exp2 :exp3
exp1 成立,exp2 计算,整个表达式的结构是:exp2 的结果
exp1 不成立,exp3 计算,整个表达式的结构是:exp3 的结果
#include <stdio.h>
int main()
{
int a = 0;
int b = 3;
int max = 0;
max = a > b ? a : b;
printf("max=%d\n", max);
return 0;
}
打印:
7. 逗号操作符
用于顺序执行表达式,逗号隔开的一串表达式
#include <stdio.h>
int main()
{
int a = 0;
int b = 3;
int c = 5;
int d = (a = b + 2, c = a - 4, b = c + 2);
printf("d=%d\n", d);
return 0;
}
//逗号表达式,是从左往右依次计算
//整个表达式的结果是最后一个表达式的结果
打印:
8.单目操作符
单目操作符是指只对一个操作数进行操作的运算符,如逻辑非操作符 (!),一元正操作符 (+) (-),递增操作符 (++) (--),地址操作符 (&),sizeof操作符
逻辑非操作符 (!) - 把真变假,把假变真
#include <stdio.h>
int main()
{
int a = 10; // 10不=0,为真(1)
printf("a=%d\n", !a);
return 0;
}
打印:
9.sizeof操作符
返回数据类型或变量的大小(以字节为单位)
#include <stdio.h>
int main()
{
int arr[10] = { 0 };//int 整形4个字节
printf("%d\n", sizeof(arr));//arr 有10个元素 sizeof(arr)计算数组的大小
printf("%d\n", sizeof(arr[0]));//arr[0]中的第一个字节,字节大小为 4
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", sz);
return 0;
}
打印:
10. 强制类型转换操作符(不推荐)
将表达式转换为指定的类型
#include <stdio.h>
int main()
{
int a = 3.14;
//3.14为double型,不属于int型
//int a = (int) 3.14;//强制类型转换
printf("%d\n", a);
return 0;
}
打印: