C语言的运算符可分为以下几类:
- 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、
自增(++)、自减(–)共七种。 - 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
- 逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
- 位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、
位异或(^)、左移(<<)、右移(>>)六种。 - 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位
运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。 - 条件运算符:这是一个三目运算符,用于条件求值(?😃。
- 逗号运算符:用于把若干表达式组合成一个表达式(,)。
- 指针运算符:用于取内容(*)和取地址(&)二种运算。
- 求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
- 特殊运算符:有括号(),下标[],成员(→,.)等几种。
代码案例
#include <stdio.h>
main()
{
/* 〖例 3.14〗 本例中,20/7,-20/7 的结果均为整型,小数全部舍去。而 20.0/7 和-20.0/7 由于有实数参与运算,因此结果也为实型。
求余运算符(模运算符)“%”:双目运算,具有左结合性。要求参与运算的量均为整型。
求余运算的结果等于两数相除后的余数。
*/
printf("\n\n%d,%d\n", 20 / 7, -20 / 7);
printf("%f,%f\n", 20.0 / 7, -20.0 / 7);
/* 【例 3.15】本例输出 100 除以 3 所得的余数 1。 */
printf("%d\n", 100 % 3);
/* 【例 3.16】 i 的初值为 8,第 2 行 i 加 1 后输出故为 9;第 3 行减 1 后输出故为 8;第 4 行输出 i 为
8 之后再加 1(为 9);第 5 行输出 i 为 9 之后再减 1(为 8) ;第 6 行输出-8 之后再加 1(为 9),
第 7 行输出-9 之后再减 1(为 8)。 */
// 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--);
/* 【例 3.17】 这个程序中,对 P=(i++)+(i++)+(i++)应理解为三个 i 相加,故 P 值为 15。然后 i 再自增 1
三次相当于加 3 故 i 的最后值为 8。而对于 q 的值则不然,q=(++j)+(++j)+(++j)应理解为 q
先自增 1,再参与运算,由于 q 自增 1 三次后值为 8,三个 8 相加的和为 24,j 的最后值仍
为 8。 */
int i = 5, j = 5, p, q;
p = (i++) + (i++) + (i++);
q = (++j) + (++j) + (++j);
printf("%d,%d,%d,%d", p, q, i, j);
return 0;
}