C语言中主要的运算符:
1 算术运算符:
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类。
6.条件运算符
这是一个三目运算符,用于条件求值(?:)。
7.逗号运算符
用于把若干表达式组合成一个表达式(,)。
8.指针运算符
用于取内容(*)和取地址(&)二种运算。
9.求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10.特殊运算符
有括号(),下标[],成员(→,.,->)等几种。
例一:
关系表示符
void main()
{
int i=1,k=2,j=3;
printf("%d\n",k==j-1==i); // 计算时根据左结合性,先计算k==j-1,结果为1,在计算1==i,成立,输出1.但不符合数学规则。
}
注意,运算符在C语言中具有左结合性;
例二:
逻辑表达式
void main()
{
int i=1,j=2,k=3;
float x=300000,y=0.85;
printf("%d,%d\n",x||(i=5)&&j-3,i<j&&x<y); // 优先级 ! > && > ||
// 0.5< x < 2.0 的结果永远为真
// exp1 && exp2 只有exp1为真才计算exp2
// exp1 || exp2 只有exp1为假才计算exp2
}
例三:
if 判断语句 排列大小 从小到大 经典交换a,b语句
void main()
{
float a,b,c,t;
printf("请输入三个排列大小的数:\n");
scanf("%f%f%f",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
}
例四:
三目运算符 (a>b)? a:b
void main()
{
int x,y;
scanf("%d%d",&x,&y);
printf("%c\n",x?'a':'b'); // 各表达式之间的类型可以不同 此时条件表达式的值的类型为二者中较高的类型
printf("%f\n\n",x>y?1:1.5);
}
第一个表达式为真输出表达式二,否则输出表达式三
1. 赋值运算符 << 条件运算符 << 关系运算符
2. 结合方式自右向左 即
a>b?a:c>d?c:d 等价于 a>b?a:(c>d?c:d)
例五:
switch语句
void main()
{
int a;
printf("请输入一个1-5の数:\n");
scanf("%d",&a);
switch (a)
{
case 1: printf("Monday\n");
case 2: printf("Tuesday\n");
case 3: printf("Wednesday\n");
case 4: printf("Friday\n");
case 5: printf("Friday\n");
default: printf("error\n"); // 会执行满足条件之后的所有语句!!!!!!!!需要加入break语句。。
}
}
例六:
对整数的各数字位进行分解
输入一个不多于四位数的正整数,求出该数是几位数,并逆序打印出:
void main()
{
int a,x1,x2,x3,x4; // x1,x2,x3,x4代表个、百、……位
printf("请输入一个数:\n");
scanf("%d",&a);
x1=a%10;
x2=a/10%10;
x3=a/100%10;
x4=a/1000%10; // k=x/10的(n-1)次方%10 n为第n位 k为第n位上的数字
if(x4!=0) printf("四位数:%d%d%d%d\n",x1,x2,x3,x4);
else if(x3!=0) printf("三位数:%d%d%d\n",x1,x2,x3);
else if(x2!=0) printf("两位数:%d%d\n",x1,x2);
else printf("一位数:%d\n",x1);
}