目录标题
(1)算术运算符
+(加), -(减) , *(乘) , /(除) , %(求余)
除法运算的注意事项
- 被除数和除数都是int类型,则商一定是整数(原因:如果商是小数,结果会自动舍去小数点后面的数字)
例如:
16 / 4 = 4
16 / 5 = 3 - 被除数和除数只要有一个是float类型,则商也是小数(原因:如果商是小数,结果也会保留小数点后面的数字)
例如:
16 / 4.0 = 4.0
16.0 / 4 = 4.0
16.0 / 5 = 3.2
16 / 5.0 = 3.2
典型例题:求s = 1 + 1/2 + 1/3 + …+1/100的值
求余运算的注意事项
- 求余的运算对象必须都是整数
- 求余的符号与被求余的数的符号一致
例如:
13 % 3 = 1
13 % -3 = 1
-13 % 3 = -1
验证的小例子:
#include <stdio.h>
int main (void)
{
printf ("%d", 13%3);//结果:1
printf ("%d", -13%3);//结果:-1
printf ("%d", 13%-3);//结果:1
}
(2)关系运算符
<(小于), >(大于), ==(等于), !=(不等于),
<=(小于等于) , >=(大于等于)
"=“与”=="的区别:
"="的意思是将右边的东西赋值给左边
而"=="的意思就是数学意义上的等于
(3)逻辑运算符
||(或) , &&(且), !(非)
该逻辑运算符与数学的或且非符号对真假的判定方法一致
- &&左右两边的表达式均为真,则总判断为真
- ||左右两边的表达式只要有一个为真的,则总判断为真
C语言对真假的处理:
- (1)非零则真,零则假;
- (2)真用1表示,假用0表示
(1)验证的小例子:
#include <stdio.h>
int main (void)
{
if (1)
printf ("哈哈");
if (-5)
printf ("嘻嘻");
if (0)
printf ("呵呵");
}
//结果:哈哈嘻嘻
(2)验证的小例子:
#include <stdio.h>
int main (void)
{
int a,b;
a = (3>2) && (5<4);//整体为假
b = (3>2) || (5<4);//整体为真
printf ("a=%d", a);//结果:a=0
printf ("b=%d", b);//结果:b=1
}
(4)赋值运算符
= , += , -= , *=, /=
对于a += 3;它等价于 a = a+3;
对于a *= 3;它等价于 a = a * 3;
优先级别:算术>关系>逻辑>赋值
(5)自增运算符
前自增和后自增的相同点及不同点
前自增 ++i ,后自增 i++
相同点:都使i的值加1
不同点:
前自增使表达式的值为i+1之后的值
后自增使表达式的值为i+1之前的值
验证的小例子:
#include <stdio.h>
int main (void)
{
int a, b, c;
a = 5;
b = a++;
c = ++a;
printf ("a=%d", a);//结果:a=7(前自增和后自增使a加了两次1)
printf ("b=%d", b);//结果:b=5 (后自增使b的值为a+1之前的值)
printf ("c=%d", c);//结果:c=7 (前自增使c的值为a+1之后的值)
}
使用该运算符的注意事项
该运算符应单独使用,不要将它作为表达式的一部分
使用时应屏蔽掉前自增和后自增的差别
使用该运算符的好处
使代码更简练
该运算符的运算速度更快
(6)三目运算符
格式:(A ? B : C)
等价于
if (A)
B;
else
C;
即如果式子A成立,则执行B;如果不成立,则执行C
验证的小例子:
#include <stdio.h>
int main (void)
{
int a = 1;
int b = -1;
(a>0 ? a++ : a--) ;
(b>0 ? b++ : b--);
printf ("a=%d", a);//结果:a=2
printf ("b=%d", b);//结果:b=-2
}
(7)逗号表达式
格式:(A,B,C,D)
功能:从左到右执行
最终表达式的值为最后一个式子的值
验证小例子:
#include <stdio.h>
int main (void)
{
int i, j;
i = 2;
j = (i++, i+3, i++, i-1);
printf ("j=%d", j);//结果:j=3
}