目录
1.C的运算符简介
C语言的运算符有不同的优先级,在表达式中,各运算量参与运算的先后顺序不仅要遵行运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。
C语言的运算符:
算数运算符 | + - * / % ++ - - |
关系运算符 | > < == >= <= ! = |
逻辑运算符 | ! && || |
位运算符 | << >> ~ | ^ & |
赋值运算符 | =及其扩展赋值运算符 |
条件运算符 | ? : |
逗号运算符 | , |
指针运算符 | *和& |
求字节数运算符 | sizeof |
强制类型转换运算符 | 类型 |
分量运算符 | .→ |
下标运算符 | [ ] |
其他 | 如函数调用运算符() |
2. 算数运算符与算数表达式
2.1 算术运算符
运算符 | 含义 | 例 | 备注 |
+ | 加 | 5+2结果7 | |
- | 减 | 5-2结果3 | |
* | 乘 | 5*2结果10 | |
/ | 除 | 5/2结果2 | |
% | 取余数 | 5%2结果1 | 只适用于整型数 |
++ | 自增运算 | y=x++;等同y=x,x++ y=++x;等同x++,y=x | 适用于整型数 |
-- | 自减运算 | y=x--;等同y=x, x-- y=--x,等同x--,y=x | 适用于整型数 |
++、- -使得整型变量的值增加1或减小1,它不能作用在表达式或常数上,自增自减运算符均为单目运算符,都具有右结合性。++i/--i i自增/自减1后再参与其他运算。i++/i-- i参与运算后,i的值再自增/自减1
例题1.自加自减符号的使用
#include <stdio.h>
main()
{
int i = 8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
输出结果:
例题2:自加运算符的使用
#include <stdio.h>
main()
{
int i=5,j=5,p,q;
p=(i++)+(i++);
q=(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
输出结果:
2.2 正负号运算符
作为正负号的“+”和“-”优先级高于“*”和“/”运算符,接合方向自右向左(←),-a*b相当于(0-a)*b
加法运算符“+”:为双目运算符,即应有两个量参与加法运算,具有右结合性;
减法运算符“-”:为双目运算符;但“-”也可作负值运算符为单目运算,如-x,-5等具有左结合性
乘法运算符“*”:双目运算符,具有左结合性
除法运算符“/”:双目运算符,具有左结合性,参与运算均为整数时,结果也为整型舍去小数,如果运算量中有一个是实型,结果为双精度实型
例题3:算术运算符的使用
#include <stdio.h>
main()
{
printf("\n\n%d,%d\n",20/7,-20/7);
printf("%f,%f\n",20.0/7,-20.0/7);
}
输出结果:
2.3 求余运算符(模运算符%)
双目运算符,具有左结合性,要求参与运算的量均为整型,求余运算符的结果等于两数相除后的余数
例题4:求余运算符的使用
#include <stdio.h>
main()
{
printf("%d\n",100%3);
}
输出结果:
2.4 算术表达式
算术表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,表达式求值按运算符的优先级和结合性规定的顺序进行,单个的常量、变量、函数可以看做表达式的特例。
3.赋值运算符与赋值表达式
3.1赋值表达式“=”
由等号连接的式子称为赋值表达式,赋值表达式的功能是计算表达式的值再赋予左边的变量,具有右结合性
表达式的一般形式:
变量 = 表达式
如果赋值运算符两边的数据类型不同,系统将自动进行类型转换,即把赋值符号右边的类型转换成左边的类型,转换规则如下:
- 实型赋予整型舍去小数部分
- 整型赋予实型,数值不变但将以浮点形式存放,即增加小数部分(小数部分的值为0)
- 字符型赋予整型,犹豫字符型为一个字节,而整型为两个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0;
- 整型赋予字符型,只把低八位赋予字符量
例题5: 赋值运算符的使用
#include <stdio.h>
main()
{
int a, b =322;
float x,y =8.88;
char c1='k',c2;
a = y;
x = b;
a = c1;
c2 = b;
printf("%d, %f, %d, %c",a,x,a,c2);
}
输出结果:
3.2 复合赋值运算符
+=、-=、*=、/=、%=
复合赋值运算符是双元运算的一种简化写法,例如:sum=sum+i可以简化为sum+=i,运算时需要将右边部分作为一个整体进行运算,例如:b+=3*4.5等价于b=b+(3*4.5) ; i+=1:++i或者i++