基本结构和运算符

        分支结构

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

if(1,2,3)
    H = 1;
    P = 2;//像这样if就只能管辖到H=1;这一条语句,而P不属于if管,
            //所以无论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

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

#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语言运算符的"惰性''。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值