目录
算术运算符
基本的算术运算符
+ 加法运算符,或称正值运算符,例 2+3、+5
- 减法运算符,或称负值运算符,例 7-1、-5
* 乘法运算符,例 3*4
/ 除法运算符,例 5/2
% 模运算符,或称求余运算符,例 5%2的值为1
#include<stdio.h>
int main()
{
int x,y;
printf("输入两个整数:");
scanf("%d %d",&x,&y);
printf("x+y=%d\n",x+y);
printf("x-y=%d\n",x-y);
printf("x*y=%d\n",x*y);
printf("x/y=%d\n",x/y);
return 0;
}
运行结果
其中,作为运算对象的变量或常量称为操作数。例如 x+y 中 +是运算符,x和y就是操作数。而运算符左侧的操作数称为第一操作数或者左操作数。运算符右侧的操作数称为第二操作数或者右操作数。
在这里,要特别的说明一下除法运算符和模运算符。
除法运算符
除法运算只取商的整数部分,会舍弃小数点以后的部分。除号的两端如果是整数,执行的是整数除法,得到的结果也是整数。如果希望得到的是浮点数的结果,两个操作数必须至少有一个是浮点数,这时C语言会进行浮点数除法。
例如 5/3的结果是1,而3/5的结果是0。
模运算符
模运算其实就是数学里的求余。这个运算符只能用于整数,不能用于浮点数。
负数求模规则是,结果的正负号由第一个操作数的正负号决定。
#include<stdio.h>
int main ()
{
printf("%d\n",11%-5);
printf("%d\n",-11%-5);
printf("%d\n",-11%5);
return 0;
}
运算结果
例如 5%3的结果是2,而3%5的结果是3.
算数运算符的说明
1. 参与 +、-、*、/ 运算的操作数可以是任意算术类型的数据。若参与+ 、-、*、/ 运算的两个数中有一个数是实型数据(float或double型),系统会自动将参与运算的整型数据和实型数据统一转换为double型,然后进行运算,运算结果是double型。
2. 当字符型数据和整型数据进行算术运算时,系统会自动将字符的ASCII码与整型数据进行运算。
例如 2+‘a’,在计算时,系统会自动将‘a’转换为97,其运算结果是99.
当字符型和实型数据进行算术运算时,系统会将字符的ASCII码转换为double型数据,然后进行运算。
3. 若参与 + 、-、*、/、%运算的两个数都是整数时,则运算结果也是整数。
例如 3/2结果为1,舍去小数部分。
逻辑运算符
C语言提供了3种逻辑运算符:
&& 逻辑与
|| 逻辑或
! 逻辑非
注意:&& 和 || 为双目运算符,有两个操作数。!为单目运算符,只要求一个操作数
a | b | a&&b | a||b | !a |
---|---|---|---|---|
真 | 真 | 真 | 真 | 假 |
真 | 假 | 假 | 真 | 假 |
假 | 真 | 假 | 真 | 真 |
假 | 假 | 假 | 假 | 真 |
逻辑运算符的优先级次序
例子
a>b&&c>d 等价于 (a>b)&&(c>d)
!a==b||c<d 等价于 ((!a)==b)||(c<d)
a+b>c&&x+y<d 等价于 ((a+b)>c)&&((x+y)<d)
!(非) ^ 高
算术运算符 |
关系运算符 |
&&和 || |
赋值运算符 | 低
逻辑表达式的值
C语言中规定,参与逻辑运算的操作数以非0代表真,以0代表假。逻辑表达式的值,即逻辑运算结果,以数值1代表真,以0代表假。
例如
a=3,则!a的值为0
a=3、b=4,则a&&b的值为1
3||0||-4的值为1
//闰年的判断
#include<stdio.h>
int main()
{
int year=0;
scanf("%d",&year);
if((year%4==0&&year%100!=0)||(year%400==0))
printf("是闰年\n");
return 0;
}
运行结果
注意:
对于&&运算符来说,左操作数的结果为0的时候,右操作数就不再执行。
对于||运算符来说,左操作数的结果不为0时,就无需执行右操作数。