幻想编程

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

时间:15-09-21 22:03:52点击:1602

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语言的数学运算就告一段落啦