C 语言的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。
算术运算符

算术运算符
实例
请看下面的实例,C 语言中所有可用的算术运算符:
#include < stdio.h >
int main ()
{
int a = 21 ;
int b = 10 ;
int c ;
c = a + b ;
printf ( " Line 1 - c 的值是 %d \ n " , c ) ;
c = a - b ;
printf ( " Line 2 - c 的值是 %d \ n " , c ) ;
c = a * b ;
printf ( " Line 3 - c 的值是 %d \ n " , c ) ;
c = a / b ;
printf ( " Line 4 - c 的值是 %d \ n " , c ) ;
c = a % b ;
printf ( " Line 5 - c 的值是 %d \ n " , c ) ;
c = a ++; // 赋值后再加 1 ,c 为 21,a 为 22
printf ( " Line 6 - c 的值是 %d \ n " , c ) ;
c = a --; // 赋值后再减 1 ,c 为 22 ,a 为 21
printf ( " Line 7 - c 的值是 %d \ n " , c ) ;
}
当上面的代码被编译和执行时,它会产生下列结果:
Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 21
Line 7 - c 的值是 22
上面的例子,大部分很好理解。我们来讲讲需要注意的地方与难以理解的地方。
需要注意的是 / 除号 与 % 取余号
/ 除号说明
Eg:
int a1 = 100;
int b = 30;
double c = a1 / b;
实际上是 c=3.000000的。为什么不是3.333333呢。因为/ 除号 两边的数值都是整型,所以得的值也是整型,这里我们只是用double类型去接收而已。怎么能得出正确的3.33333这个值呢。只要把除数或被除数任何一个改成double类型即可,因为/除号在运算时,会自动把两边的数据由低类型转换为高类型。 double 类型比int 类型高
Eg :
int a1 = 100;
double b = 30;
double c = a1 / b;
这样就得出c=3.333333
或
double a1 = 100;
int b = 30;
double c = a1 / b;
也能得出正确值 。在计算机的运算过程中,会把int b转为double 类型,再计算。
如 int b=100.5,是不是程序也会把b 转成double ,答案是不会。这种是我们强制把double赋值给int,计算机不会自动把高类型转为低类型。
% 取余号 说明
% 取余号 要求 两边的数据类型为 int 类型。注意 % 取余号只针对于整型进行运算。就是取余数
double a1 = 100;
int b = 30;
int c = a1 % b;
这样写是错误的。编译不过
++,-- 自增,自减符号的理解。
int a1 = 10;
int b = ++a; //b=11,a=11
int c = a++; //c=11,a=12
int d = (++a)++; //d=13,a=14
int e = c++ + b; //e=22;c=12;
int f = ++b + b; //f=24;b=12
其实很好理解。记住一句话 放前面自加1后再用。放后面用了后再自加1。
再来一个难。
int aa = 2;
int g = aa++ + ++aa; //g=6;a=4
++在后面先用再自加1。aa=2参与计算(先用,就是用于计算),再aa自加1变成3;然后++aa,++在前面先自加1,aa变成了由3变成了4,再用(用于计算)。所以g=2+4=6;aa=4。
就这么简单。同理--也一样。