今天介绍几种运算符
1、条件运算符
/*
条件运算符为?和:,它是一个三元运算符,即有三个参与运算的操作数。由条件运算符组成条件表达式的一般形式为:
表达式1 ? 表达式2 : 表达式3
其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。
在这个过程中,如果表达式1为真,那么表达式3的结果不在进行运算,即发生忽略,反之,表达2的结果进行忽略。
*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a=3,b=4,c=5,d=6,max;
max=a>b?a:b;//结果就是为了得到a和b中较大的那个数
printf("%d",max);//条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
max=a>d?a:c>d?c:d;//条件运算符的结合方向是自右至左。
printf("%d",max);
system("pause");
return 0;
}
2、逻辑运算符/*
与运算符(&&)和或运算符(||)均为二元运算符。具有左结合性。非运算符(!)为一元运算符,具有右结合性。
“&&”和“||”低于关系运算符,高于赋值运算符,且&&的优先级高于||的优先级,“!”高于算术运算符。
*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a=3,b=2,c=1,d=5,e=6,f;
f=a<b||b<c&&c<d||d<e;
printf("%d",f);
system("pause");
return 0;
}
3、关系运算符/*
关系运算符都是二元运算符,其结合性均从左至右。关系运算符的优先级低于算术运算符,
高于赋值运算符。在六个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。
*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int x=3,y;
y=2<x>=8;//从左至右运算
printf("%d",y);
system("pause");
return 0;
}
4、赋值运算符
在赋值运算符中体现了类型转换,就是说,如果赋值运算符两边的数据类型不相同的话,系统将自动进行类型转换,即把赋值号右边的类型转换为左边的类型。
具体规定如下:
实型赋予整型,舍去小数部分。
整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)
字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码的值放到整型量的低八位中,高八位为0.整型赋予字符型,只把低八位赋予字符量
/*
赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性,因此a=b=c=5可理解为a=(b=(c=5))。
*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int x=3,y=4;
x+=y;
printf("%d",x);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a,c,b=97;
float x,y=8.88;
char c1='a',c2;
a=y;
x=b;
c=c1;
c2=b;
printf("a=%d, x=%f, c=%d, c2=%c \n", a, x, c, c2);
printf("%d",x);
system("pause");
return 0;
}
5、算数运算符#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int x=4,y=3,z;
printf("%d,%d\n",20/7,-20/7);//当两个操作数均为整型或者是char型时,除法运算实现了整型的运算,结果与被除数的符号相等
printf("%f,%f\n",20.0/7,-20.0/7);//只要有一个操作数是实型,则结果的类型为实型
printf("%d\n",100%3);//求余运算要求两个操作数均为整型
z=x+++y;//++i:i自增1后再参与其它运算。--i:i自减1后再参与其它运算。i++:i参与运算后,i的值再自增1。i--:i参与运算后,i的值再自减1。
printf("%d,%d",x,z);
z=x+++--y;
printf("%d,%d,%d",x,y,z);
system("pause");
return 0;
}