C语言 运算符与表达式

###算数运算符:‘+’,‘-‘,’*‘,’/',’%(取余)‘,’+(正号)‘,’-(负号)‘

算数运算符:%是计算两数相除后的余数,但这两个操作运算符都必须是整数类型;

示例代码:

#include

#include

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

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;

你可能感兴趣的:(C语言 运算符与表达式)