###算数运算符:‘+’,‘-‘,’*‘,’/',’%(取余)‘,’+(正号)‘,’-(负号)‘
算数运算符:%是计算两数相除后的余数,但这两个操作运算符都必须是整数类型;
示例代码:
#include <stdio.h>
#include <math.h>
void main(){
int a=10,b=6;
printf("a取模b结果为:%d\n",a%b);
float f=3.14f;
float f2=35.45f;
printf("f取模f2的值为:\n",fmod(f,f2));
}
结果输出为:4 ; 3.140000
要点:取模算术运算符只能用于整数,求float浮点数的余数要调用fmod;fmod包含在math.h头文件中;
###关系运算符:>, <, >=, <= ,==(等于), !=(不等于)
注意:
(1):在C语言中的相等关系 是 ’==‘ ,而 ’=‘ 表示赋值运算符;
(2):在C语言中用非0代表 true,用0代表false;
###逻辑运算符:||(或) &&(且) !(非)
###符合运算符:a+=3 等价于 a=a+3;
x*=y+8 等价于 x=x*(y+8)
x%=3 等价于 x=x%3
###条件运算符:exp1 ? exp2:exp3
条件运算符(?:)有三个操作数,故我们将其称为三目运算符。表达的意思为:如果exp1为真,则运算exp2,整个条件表达式的值为exp2的值;反之,则运算exp3,整个条件的值为exp3的值;
例:
#include <stdio.h>
void main(){
int a,b,m;
printf("输入数字a:");
scanf("%d",&a);
printf("输入数字b:");
scanf("%d",b);
m=a>b?a:b;
printf("您输入的数字a为%d\b为%d\n最大值是:%c=%d\n",a,b,m==a?'a':'b',m);
}
###类型转换:
1.隐式类型转换:
(1)在表达式中,char和short类型的值,无论有负号还是无符号,都会自动转换成int或者unsigned int;(如果short的大小和int一样,unsigned short 可表示short可表示的最大值就大于int,在这种情况下,unsigned short 被转换成unsigned int)。因此他们被转换成表示范围更大的类型,故而我们把这种转换称之为“升级(promotion)”
(2).按照从高到低的顺序给各种数据类型分等级:long double, double,float, unsigned long,long long, unsigned long , long ,unsigned int ,int;如果long 和 int 的大小相同,则unsigned int的等级应位于long 之上。charhe short并没有出现在这个等级中,是因为它们参与运算时已经升级成了int或者unsigned int;
(3).在任何涉及两种数据类型的操作中,它们之中等级较低的类型辉被转换成等级高的类型;
(4).在赋值语句中,等号(=)右边的值在赋予 等号(=)左边的变量之前,首先要将右边的值得数据类型转换成左边的类型。也就是说,左边的变量时什么数据类型,右边的值就要转换成什么数据类型的值。这个过程可能会导致右边的值得类型升级,也可能会导致其类型降级(demotion)。所谓降级就是指:等级较高的类型的被转换成等级较低的类型;
(5).作为参数传递给函数时,char和short 会被转成int,float会被转成int,float会被转换成duoble;