
赋值
首先我们要了解,运算,再平常,我们计算数值都是一加一等于二,或是一减一等于零。
但在C语言中,是没有等于这个东西。=这个符号,在C语言叫赋值。从右往左的顺序。
比如:
int a=1; //就是1赋值给a。
int a=1+1; //1+1赋值给a。
这里面有一个很重要的问题是 两个数值相加或相减等其它加减乘除的运算,都是赋值给变量名,不能 2=1+1; 不能常量赋值给常量,也不能变量赋值给常量,比如:2=a+b;
在运算过程中,有个很核心的问题是,使用计算机的作用是用来做什么?
就是用来做重复的事,数值的重复,以及代理人脑,人力等其它重复的计算和运行。
循环表达
所以我们先说说运算经常用的一个东西,循环。
循环也有很多种,while, do while ,for等等。我们这里先说while。
循环用的好,让你事半功倍,用的不好要么死循环,要么给出不是你要的答案。
在括号呢,时判断表达。比如 i=0;while(i<2),while的作用域内就会进行0.1两次循环。如果i=0;while(0<=2);就会进行0.1.2三次循环。千万记住,大小于的运算符要注意,你若是while(i>2),就会变成0>2,这是一个错误的表达式。
了解了循环的作用,我们看看运算规则。
a=b+c; a为左值,b和c为右值。b和c相加得出的值,赋值给a,a就是b+c。有一种情况。a=b+(c+d);这种也是常规运算,但括号运算符优先,(c+d)的这个过程,他们在内存其实时临时的,运算完后得出的值继续和b相加在赋值给a后,(c+d)这个优先运算位会在内存消失。就剩下变量a.b.c.d的位置。
加减乘除,都是这么一个运算过程,大概了解就好。
int a=0,b=0,c=0,d=0;a=b=c=d=5;了解了赋值,这个应该也会看得懂。开始所有值都是0,赋值运算从右往左以此为5给了d,点变成5,我们写成d(5)这样好理解。而d(5)给了c,c就变成了c(5)一次下去,最后a.b.c.d变量名都有一个5的值。
这种两个以及好几个的运算,就叫表达式,表达式有我们说的运算,还有一个是判断。这个后面说。
有符号和无符号
刚才我们一直都在说整数,这次我们说一个有符号的数。什么是有符号?
这种就是有符号,因为在内存里,除了整形类型,其它很多类型里的内存里,都有一个第一位置留着一个位,那个位就是用来存放0或1,0是整数,1就是负数。而-1在内存里就是1000 0001.最高位是1,就是负数的意思,有符号的意思。
在C语言里,-1也是一种运算,叫一元运算。而1+2这种是两个运算对象在运算,就叫二元运算。后面还有一种,叫三元运算,后面说。而单单就一个1这种就没有这种叫法。
因为-1优先的是从左到右,先看-符号,在看1所以过程中,他们算运算了一次。这个我们在数据类型那篇有说过。
说到了运算优先,我们看看这个
-a+b✖c✖(d/(e-f));这种优先怎么看?如果在优先同级的情况下,我们优先看(e-f),再来(d/(e-f)),再来就是b✖c✖(d/(e-f))依次从左往右,最后是-a+b✖c✖(d/(e-f)).
C语言有大概40多个运算符,每个运算符都很清楚很有个性,都有自己的独特作用。
自增自减(常用)
其中最经常用到的是++ --这种自增自减运算符。而这种自增运算符还分前自增和后自增。
如两个变量名a=5,b=5;
++a //这个a就变成6;前自增优先运算
a++;这个还是5。其实已经不是5了。只不过他是后自增,后自增的情况下是表给你看是5,其实等这个后自增表达式运行完在运行下一个表达式时,这个a就是6.你就给自己一个记忆法,福川我就起名,叫表5隐6;等下下面还有个例子给你参考。
--b//这个b时4,前自减的优先运算
b--//这个就和刚才那个a++一样,表5隐4;
这两个还是让很多人逻辑很混乱。其实好好缕一缕,福川在给你们看下面这个例子。
在一个程序
int a=5,b=5;
a++;
++a;
b--;
--b;
printf("a=%d""b=%d",a,b);
你们觉等a等于多少?b等于多少?
a=7 ;b=3;
为什么?福川先说++,在第一个a++这个里面,我们就叫它表5隐6,再到第二个++a,就已经是++6这种情况下,++6运算一下,就是7.而--也这样,表5隐4,到第二个--就变成--4成了3;
学C语言,其实也是在锻炼逻辑能力。哪怕以后不会做编程行业,福川也觉得说我们的逻辑能力会比别人更强。今天这篇,福川觉得要多练练自增自减,未来用的地方多。很多都出错在这个上。
来咯,小小测试下。
福川有一个例子,int a=2,b=3,c=0;c= (++a)+(b--)✖(a--);a等于多少?b等于多少?c等于多少?留言,给你解答。
福川有一个例子,int a=1,b=2,c=0;while(a++<3) c=c+a+b; 请问C是多少?a是多少,b是多少?留言,给你解答。