当前位置:   article > 正文

基本结构和运算符_算数语法结构

算数语法结构

        分支结构

        C语言是由一句句语句组成的,首先我们来看 “HP=1”这是一个表达式,而“HP=1;”这又是一个语句了,C语言中的语句必须以“;”英文分号结束。前面提到的是简单语句,但是像用{}用这个花括号引起来的0条或多条语句又称为复合语句,很明显在使用花括号的同时一般都会伴随着使用一个关键字,所以像for while return,这些也都是语句。那么C程序的核心就是由函数组成而函数的内部都是c语句。

        表达式也是C语言中都会有的一个东西,要明确的是,在C语言任何合法的表达式都会有一个值!

        C语言的三种基本结构

            顺序结构

        顾名思义阿,顺序结构就是从头走到尾,把每一个语句都执行一次,且只执行一次,没有任何条件,这应该是c中最简单的一种结构了(就像下面这种):

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int sum = 0;
  5. int H = 1;
  6. int P = 2;
  7. sum = H+P;
  8. printf("H+P=%d",sum);
  9. return 0;
  10. }

        分支结构(选择结构

        这种结构就不像分支结构那样了,选择结构它会根据c程序中设置的条件了判断是否执行该语句,也就是说在选择结构中,并不是执行所有的语句,而是只执行满足判断条件的语句,不满足判断条件的就不会去执行,最常见的就是if啦,switch:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i=1,j=2;
  5. int sum = 0;
  6. sum = i+j;
  7. if(sum%2 = 1)
  8. {
  9. printf("%d",sum);
  10. }
  11. else
  12. {
  13. printf("null");
  14. }
  15. return 0;
  16. }

        循环结构

        这一个呢,相信大家刚刚学的时候应该是用得最多的了,循环结构有一点和选择结构相似,就是它也需要有一个条件,如果该语句满足这个条件那么,这一条语句就会被反复执行,直到该语句不满足位置,那么这里就会有一个死循环的问题了,如果你的某一个判断条件没有设置好,那么就可能会造成程序出现死循环的问题,常见的有:while dowhile for,

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int sum = 0;
  5. int i = 0;
  6. while(i<101)
  7. {
  8. sum = sum+i;
  9. i++;
  10. }
  11. printf("sum=%d",sum);
  12. return 0;
  13. }

        if语句的三种基本形式

        第一个就是单纯的if

if(表达式)

语句

        if括号里面只能加表达式,不能加语句,至于表达式也有很多种,后面会详细复习到,如果满足该表达式那么就会执行if所管辖的语句,那么if的管辖范围如何来确定呢?如果你的if后面没有用{}把语句括起来,那么if就只能管辖到第一个分号,比如:

  1. if1,2,3
  2. H = 1;
  3. P = 2;//像这样if就只能管辖到H=1;这一条语句,而P不属于if管,
  4. //所以无论if里面是啥条件P都等于2

        所以呢,建议大家不要偷懒,不管if后面有多少语句,在你把if写下来后,你就把{}给打上,这样或许会减少你的错误。

        第二个就是if else

        也和if差不多,只不过多了个选择,如果不满足if的条件 那么不管你是什么条件都去执行else所管辖的语句,唯一值得注意的就是一个if与else一定要是对应关系。

        第三种if elseif....

        这种就是可以加多个elseif,但是咧,你把它拆开看其实也就是多写了几个if else罢了,每个if都要匹配一个else,且是和最近的else匹配

        运算符

        接着来运算符,+-*/不用说,小学生都知道,运算符主要就是要了解以下内容:

 几目运算符    

单目运算符 : 该运算符只需要一个操作数, 如 : ++ , -- &

双目运算符 : 该运算符需要两个操作数, 如 : + - * /

三目运算符 : 该运算符需要三个操作数, 如 : ? :

怎么区分呢?就是这个运算符需要几个操作数来实现,你比如+,1+2,很明显,你要实现加法你就得拿两个数相加吧,那么用了两个数就是双目运算符,以此类推。

结合性

从左到右结合, 从右到左

举个例子 :

已知 + 结合性 "从左到右" 结合,在C语言中 :

a + b 和 b + a 含义是不一样的.

最重要得就是运算符的优先级了:

单目运算符 > 算数运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符

这些东西咧,你得经常去判断才能够记得很清楚,实在不行你百度一下。

        接下来我们来仔细的介绍一下各种运算符

        1、算数运算符

        单目运算符有:自增和自减,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

其实区别说通俗点就是看值在那一瞬间有没有发生改变,具体来看代码

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int H=1,P=2;
  5. int sum,sum1;
  6. sum = (H++)+(H+P);
  7. sum1 = (++H)+(H+P);
  8. printf("sum=%d\nsum1=%d",sum,sum1);
  9. return 0;
  10. }//从代码的运行结果我们就可以很直观的看出二者的区别

          双目运算符

+-*/

        关系运算符

    这些关系运算符也都是双目运算符

    < <= > >= 
        == !=

结合性都是从左到右的

        关系运算符是用来表判断了,判断两个操作数之间的关系,它会返回一个布尔类型的值,比如:3>5是不成立的,它就会返回一个0,4>3>2,这个表达式并不和它在数学上的表达式意义相同,在C语言中这个表达式我们应该拆开来看,看判断4>3,这个时候会返回一个0,然后再来判0>2,所以这个表达式在C语言中反而是个错误的。

        逻辑运算符

        逻辑运算符返回的也是一个布尔类型的值

!    逻辑非        单目运算符    "取反"    
&&    逻辑与        双目运算符    "并且",从左到右    
||    逻辑或        双目运算符    "或者",从左到右
    逻辑表达式:用逻辑运算符(! && ||)连接起来的式子.
逻辑表达式的值:
    逻辑真 1(非0)
    逻辑假    0

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a,b,c,d,H,P;
  5. a=1,b=2,c=3,d=4,H=5,P=6;
  6. (H=a>b)&&(P=d>c);
  7. printf("%d %d %d %d %d %d",a,b,c,d,H,P);
  8. printf("%d",(H=a>b)&&(P=d>c));
  9. return 0;
  10. }

        一开始学的时候我特别疑惑,为啥输出的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语言运算符的"惰性''。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/613061
推荐阅读
相关标签
  

闽ICP备14008679号