运算符是一种特殊的符号,用以表示数据的运算,赋值和比较等
算数运算符是对数值类型的变量进行运算的,在C程序中使用的非常多
#include<stdio.h>
void main(){
//取模公式
// a % b = a - a / b * b
int res1 = 10 % 3;//求10/3的余数1
int res2 = -10 % 3;// -10 - (-10)/ 3 * 3 = -10 - (-3) * 3 = -10 + 9 = -1
int res3 = 10 % -3;// 10 - 10/ (-3) * (-3) = 10 - (-3) * (-3) = 10 - 9 = 1
int res4 = -10 % -3;
//++的使用
int i = 10;
int j = i++;//运算规则等价是 int j = i; i = i + 1; ===> j = 10, i = 11
int k = ++i;//运算规则等价 i = i + 1; int k = i; ;===> i = 12, k = 12
printf("res1=%d res2=%d res3=%d res4=%d",res1,res2,res3,res4);
printf("\n i=%d j=%d k=%d",i,j,k);
printf("\n i=%d",i);
//++ 或者 -- 还可以独立使用,相当于自增 自减
//k++ 等价于 k = k + 1
//++k 等价于 k = k + 1
//如果独立使用 ++k 和 k++ 完全等价
getchar();
}
还有97天放假,问 几星期几天
int days = 97;
int week = days / 7;
int leftdays = days % 7;
printf("%d=个星期 %d=天",week,leftdays);
147.6华氏度对应的摄氏度
double huaShi = 147.6;
double sheShi = 5.0/9*(huaShi - 32);
printf("147.6℉=%.2f",sheShi);
int a = 8;
int b = 7;
printf("\na>b=%d",a > b);//1
printf("\na<b=%d",a < b);//0
printf("\na<=b=%d",a <= b);//0
printf("\na>=b=%d",a >= b);//1
printf("\na==b=%d",a == b);//0
printf("\na!=b=%d",a != b);//1
用于连接多个条件(一般来讲就是关系表达式),最终的结果要么是真(非0表示),要么是假(0表示)
下表显示了C语言支持的所有逻辑运算符,假设变量A的值为1,变量B的值为0,则
//ok1 //b=100
逻辑与&&
逻辑或|| 3. 在运行逻辑与时,如果第一个条件为真,则不再执行后面的条件,整个结果为真 4. 该现象被称为逻辑或短路现象
赋值运算符就是将某个运算后的值,赋给指定的变量
= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C=A+B 把A+B的值赋给C
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C+=A 相当于 C=C+A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C-=A 相当于 C=C-A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C*=A 相当于 C=C*A
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C/=A 相当于 C=C/A
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C%=A 相当于 C=C%A
<<= 左移且赋值运算符 C<<=2 等同于 C=C<<2
>>= 右移且赋值运算符 C>>=2 等同于 C=C>>2
&= 按位与且赋值运算符 C&=2 等同于 C=C&2
^= 按位异或且赋值运算符 C^=2 等同于 C=C^2
|= 按位或且赋值运算符 C|=2 等同于 C=C|2
案例演示赋值运算符的基本使用
位运算符作用于位,并逐位执行操作
要彻底搞懂位运算,先学习二进制
& 按位与操作,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;
| 按位与操作,按二进制位进行“或”运算。运算规则:0|0=0;0|1=1;1|0=1;1|1=1;
^ 异或运算符,按二进制位进行“异或”运算。运算规则:0^0=0;0^1=1;1^0=1;1^1=0;
~ 取反运算符,按二进制位进行“取反”运算。运算规则:~1=0;~0=1;
<< 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)
>> 二进制右移运算符。将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃
实例
条件表达式?表达式1:表达式2
int a = 10;
int b = 99;
int res = a > b ? a++:b-//这里的:的意思是否则的意思
实现两个数的最大值
int a = 10;
int b = 100;
int c = 199;
int max = a > b ? a : b
int max = a > b ? a : b
int maxmax = b > c ? b : a
实现三个数的最大值
本文章使用limfx的vscode插件快速发布