从零开始简单快乐学编程(16)--数学运算

时间:2015-09-21 22:03    点击:

C语言有很多运算符,+(加) -(减) *(乘) / (除) =(等于)只是其中的5个,但也是最常用的5个,这个我们都知道哈,只有等号=跟数学里的不一样,这个我们之前就讲过了
数学里的=号,是两边对等的 如a=1 也可以写成 1=a,数学没有变量,a=1就a=1不能在变了,意思是a的本体就是1

但C语言的=号相当于赋值,如a=1,我们就从来没写过1=a
你可以把C语言里的=号看成一个向左的箭头 ← 如a←1,意思就是把数字1赋值到a里
C语言里的等号是两个== 这样才可以 a==1 或1==a

整型变量是可以进行运算的
int a=1,b=2,c=3;
a=b=c
a=b+c
a=a+b
a=b+3
a=b*3/4
但定义的时候不能进行运算,如int a+b 或int a=b不可以
当然直接赋值是可以的 如int a=1

printf()里也可以写数学表达式
printf("%d",a+3);

C语言的运算符也有优先级的,就是最先进行运算的符号,这跟我们数学里是一样的
在数学运算里我们知道先乘除后加减,而在C语言中也是这样
a=5+2*3 结果是11 ,而非21

如果你要求平均数
a=a1+a2+a3+a4/4 这是求不出的,会先算后面的除法
需要打个括号
a=(a1+a2+a3+a4)/4 先括号内后括号外,数学这样,C语言也是这样

在程序中,有时候我们经常不得不修改变量的值,现在你应该就知道为什么叫变量咯
a=1; a变量里的值是1,我把它重新赋值 a=2; 可能有人想,1跑哪去了,1已经不在了,赋值变量就是修改其内存空间里的数据,把2已经替换成了1

如果我们要定义一个计数器变量,例如一个计算商店顾客变量,每来一个客人就自动加1
int a=0;
每来一个顾客自身加1
a=0+1;a=0+1+1;a=0+1+1+1 难道我们这样写吗,那太麻烦了

C语言可以这样写
a=a+1
在数学中,任何东西都不等于自身加1,但在计算机程序中,这是可以的,数学中a是不可变的,程序中a是可变的
程序中的=号相当于←向左的箭头,这里的意思是,将等号右边的任何东西取出,并讲计算出的值存储到左边的变量中

a=a+1的简单写法是a+=1
这种自身改变值的方法其实就叫复合赋值,+=就是复合运算符
a=a+1 可以写成 a+=1
a=a-1 可以写成 a-=1
a=a*1 可以写成 a*=1
a=a/1 可以写成 a/=1
a=a%1 可以写成 a%=1 (%是取余,遇到再说)

后者似乎又麻烦又难理解,但是后者对程序优化,加快运算速度相当有好处
所以要尽量熟悉后者的用法,并用于程序中

那么对于优先级,+=和+谁先运算?
a+=1+3 结果a等于多少?
+=的优先级要比+低,先+后+=
所以 a+=1+3 应该看成 a=a+(1+3) a=a+4

如果是a*=1+3 也是应该先运算+后运算*=
要看成 a=a*(1+3) 而不是 a=a*1+3,一定要注意加括号,没括号结果就不一样了

嘿嘿,这算起来有些头晕,当然你可以忽略,但是下面的内容就必须掌握了

a=a+1 还可以写成a++
a=a-1 还可以写成a--

++和-- 是很重要的运算符
++是变量递增1 --是变量递减1

给变量a加1时
可以这样写a++ 也可以这样写 ++a
给变量a加1时
可以这样写a-- 也可以这样写 --a

一种在前一种在后是有区别的
如果在前,是变量先参与运算,变量最后再递增(或递减)
如果在后,是变量先递增(或递减)再参与运算

可以这样理解
a++ 先处理后自加
++a 先自加后处理


比如
int a=0;
printf("a=%d",a++);先处理,先打印a=0,然后再自加,最后a=1.,但是已经先打印0了,所以不会打印1,如果再打印一次a的话会打印1

int a=0;
printf("a=%d",++a);先自加,a=1,再处理,打印出a=1

另外如果a++和++a 单独是一个语句,没任何区别

int a=0;
a++; // 先处理,没什么处理的,再自加,a=1
printf("a=%d",a);

int a=0;
++a; //先自加,a=1,再处理,也没什么处理的
printf("a=%d",a);

结果都是a=1

好了,就到这里,也不加深了解了,现在是简单了解,不然大家一开始就会搞蒙了
C语言的数学运算就告一段落啦




来源:未知//所属分类:站长原创/更新时间:2015-09-21 22:03
顶一下
(20)
83.3%
踩一下
(4)
16.7%
上一篇:从零开始简单快乐学编程(15)--注释
下一篇:从零开始简单快乐学编程(17)--判断(上)
相关内容