赞
踩
C语言是由一句句语句组成的,首先我们来看 “HP=1”这是一个表达式,而“HP=1;”这又是一个语句了,C语言中的语句必须以“;”英文分号结束。前面提到的是简单语句,但是像用{}用这个花括号引起来的0条或多条语句又称为复合语句,很明显在使用花括号的同时一般都会伴随着使用一个关键字,所以像for while return,这些也都是语句。那么C程序的核心就是由函数组成而函数的内部都是c语句。
表达式也是C语言中都会有的一个东西,要明确的是,在C语言任何合法的表达式都会有一个值!
顾名思义阿,顺序结构就是从头走到尾,把每一个语句都执行一次,且只执行一次,没有任何条件,这应该是c中最简单的一种结构了(就像下面这种):
- #include<stdio.h>
- int main()
- {
- int sum = 0;
- int H = 1;
- int P = 2;
- sum = H+P;
-
- printf("H+P=%d",sum);
- return 0;
- }
这种结构就不像分支结构那样了,选择结构它会根据c程序中设置的条件了判断是否执行该语句,也就是说在选择结构中,并不是执行所有的语句,而是只执行满足判断条件的语句,不满足判断条件的就不会去执行,最常见的就是if啦,switch:
- #include<stdio.h>
- int main()
- {
- int i=1,j=2;
- int sum = 0;
- sum = i+j;
- if(sum%2 = 1)
- {
- printf("%d",sum);
- }
- else
- {
- printf("null");
- }
- return 0;
- }

这一个呢,相信大家刚刚学的时候应该是用得最多的了,循环结构有一点和选择结构相似,就是它也需要有一个条件,如果该语句满足这个条件那么,这一条语句就会被反复执行,直到该语句不满足位置,那么这里就会有一个死循环的问题了,如果你的某一个判断条件没有设置好,那么就可能会造成程序出现死循环的问题,常见的有:while dowhile for,
- #include<stdio.h>
- int main()
- {
- int sum = 0;
- int i = 0;
- while(i<101)
- {
- sum = sum+i;
- i++;
- }
- printf("sum=%d",sum);
- return 0;
- }
if(表达式)
语句
if括号里面只能加表达式,不能加语句,至于表达式也有很多种,后面会详细复习到,如果满足该表达式那么就会执行if所管辖的语句,那么if的管辖范围如何来确定呢?如果你的if后面没有用{}把语句括起来,那么if就只能管辖到第一个分号,比如:
- if(1,2,3)
- H = 1;
- P = 2;//像这样if就只能管辖到H=1;这一条语句,而P不属于if管,
- //所以无论if里面是啥条件P都等于2
所以呢,建议大家不要偷懒,不管if后面有多少语句,在你把if写下来后,你就把{}给打上,这样或许会减少你的错误。
也和if差不多,只不过多了个选择,如果不满足if的条件 那么不管你是什么条件都去执行else所管辖的语句,唯一值得注意的就是一个if与else一定要是对应关系。
这种就是可以加多个elseif,但是咧,你把它拆开看其实也就是多写了几个if else罢了,每个if都要匹配一个else,且是和最近的else匹配
接着来运算符,+-*/不用说,小学生都知道,运算符主要就是要了解以下内容:
几目运算符
单目运算符 : 该运算符只需要一个操作数, 如 : ++ , -- &
双目运算符 : 该运算符需要两个操作数, 如 : + - * /
三目运算符 : 该运算符需要三个操作数, 如 : ? :
怎么区分呢?就是这个运算符需要几个操作数来实现,你比如+,1+2,很明显,你要实现加法你就得拿两个数相加吧,那么用了两个数就是双目运算符,以此类推。
结合性
从左到右结合, 从右到左
举个例子 :
已知 + 结合性 "从左到右" 结合,在C语言中 :
a + b 和 b + a 含义是不一样的.
最重要得就是运算符的优先级了:
单目运算符 > 算数运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符
这些东西咧,你得经常去判断才能够记得很清楚,实在不行你百度一下。
接下来我们来仔细的介绍一下各种运算符
单目运算符有:自增和自减,i++ =》i=i+1,这两个运算符都要求操作数是一个数字(小数整数随便),有关于这两个运算符重要的就是前置和后置的区别:
前置 -- : -- 在前面 ,如 : --x
后置 -- : -- 在后面 ,如 : x--
表达式的值 做完表达式后,i的值
i++ i i = i + 1
++i i+1 i = i + 1
i-- i i = i - 1
--i i-1 i = i - 1前置 -- : -- 在前面 ,如 : --x
后置 -- : -- 在后面 ,如 : x--
表达式的值 做完表达式后,i的值
i++ i i = i + 1
++i i+1 i = i + 1
i-- i i = i - 1
--i i-1 i = i - 1其实区别说通俗点就是看值在那一瞬间有没有发生改变,具体来看代码
- #include<stdio.h>
- int main()
- {
- int H=1,P=2;
- int sum,sum1;
- sum = (H++)+(H+P);
- sum1 = (++H)+(H+P);
- printf("sum=%d\nsum1=%d",sum,sum1);
- return 0;
- }//从代码的运行结果我们就可以很直观的看出二者的区别
双目运算符
+-*/
这些关系运算符也都是双目运算符
< <= > >=
== !=结合性都是从左到右的
关系运算符是用来表判断了,判断两个操作数之间的关系,它会返回一个布尔类型的值,比如:3>5是不成立的,它就会返回一个0,4>3>2,这个表达式并不和它在数学上的表达式意义相同,在C语言中这个表达式我们应该拆开来看,看判断4>3,这个时候会返回一个0,然后再来判0>2,所以这个表达式在C语言中反而是个错误的。
逻辑运算符返回的也是一个布尔类型的值
! 逻辑非 单目运算符 "取反"
&& 逻辑与 双目运算符 "并且",从左到右
|| 逻辑或 双目运算符 "或者",从左到右
逻辑表达式:用逻辑运算符(! && ||)连接起来的式子.
逻辑表达式的值:
逻辑真 1(非0)
逻辑假 0
- #include<stdio.h>
- int main()
- {
- int a,b,c,d,H,P;
- a=1,b=2,c=3,d=4,H=5,P=6;
- (H=a>b)&&(P=d>c);
- printf("%d %d %d %d %d %d",a,b,c,d,H,P);
- printf("%d",(H=a>b)&&(P=d>c));
- return 0;
- }
一开始学的时候我特别疑惑,为啥输出的P是个6阿,按照规则,先双目运算符,再赋值运算符,然后再按照从左到右的结合性,P应该是1才对呀,为什么P的值没有改变呢?这里就要提到了C语言的运算符是惰性运算符,什么意思呢:
(1) a && b && c
只有a为真时,才需要判断b的值
只有a 和 b 都为真时,才需要去判断c的值
(2) a || b || c
只要a 为真 ,就不必判断b 和 c 的值了
只有a 和 b 都为假的时,才需要判断c的值
也就是说,&&是在两个全为真的时候才为真,那么如果前面已经为假了,后面不管是啥都是假,||这个是只要有一个为真就是真,所以前面如果是真了后面也就没必要判断了。总之如果事先知道表达式的值,那么后面的运算符或表达式就不执行.这就是C语言运算符的"惰性''。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。