武林秘籍之C语言大法.第二式 语句 带你走向武林之巅

语句是C程序的基本构建块,一条语句相当于一条完整的计算机指令,在C中大部分语句以分号结尾

空语句

C最简单的语句就是空语句,它本身只包含一个分号,一般是为了语法要求来组成一条完整的语句

   while( (ch=getchar() !=EOF )
       ;      //这一条语句就是空语句,只需要保持循环的完整性不需要执行什么

表达式语句

表达式

表达式由运算符运算对象组成
C表达式最重要的一个特性就是—每个表达上都有一个值
表达式的求值顺序一部分是由它所包含的操作符优先级结合性决定的

表达式
- 4 + 62
a = 2 + 68
6 > 31
4 + ( a = 2 + 4 )10

比如判断的表达式( a >3 )这种表达式的值不是0就是1,如果条件为真那么就是1,
如果条件为假,表达式的值就是0.
这里的最后一个表达式[ 4 + ( a = 2 + 4 )]虽然完全合法但不建议使用.它是两个子表达式的和,每个子表达式都有值

在表达式后面加上一个分号,就将表达式转换成为语句

C语言的副作用—副作用是对数据对象或文件的修改

  int a = 10;
  printf("%d",a);

比如:第一条语句的副作用就是将变量a的值设置成10
调用printf函数时它的返回值我们通常不关心,它的显示作用就是其副作用

左值和右值

左值就是可以出现在赋值符号左边的东西,右值就是可以出现在赋值符号右边的数值

  a = b + 25;
  b + 25 = a;可以互换吗? 

左值是一个表达式,可以出现在赋值符的左边,表示内存中的一个地址
右值表示一个值,它出现在赋值符的右边
每个左值表达式同时是一个右值,但右值不一定能作为左值

第一个句子:
a=b+25;a是一个左值它标定了一个存储的特定的位置,而b+25指定了一个值
第二个句子:
b+25=a;原先作为左值的a可以作为右值,但是b+25不能作为左值,
应为b+25的结果必定会保存于机器的某个位置,但是我们不能预测它
所存储的具体位置,也无法保证下次是否存储于同一位置。
同理: 字面值常量都不是左值。

复合语句

复合语句就是用花括号括起来的一条或者多条语句,复合语句也称为

  while(girlfriend==1)
  {
     if(不分手)
     printf("有女朋友!!!");
     else
     girlfriend--;
  }

这个{ }之间的整个语句就是一个复合语句或者一个块

分支语句

if 语句

在这里插入图片描述

表达式结果为真则语句执行,在C语言中非零表示真,零表示假
if 一般情况下只能控制一个语句如果想要控制多条语句则需要将语句用{ }括起来

悬空else

当if出现嵌套时就会出现“悬空else”的情况

  if(a>1)
      if(b>1)
         printf("%d",a);
  else
         printf("%d",b); 

这种情况else字句是从属于最靠近的的if语句也就是if(b>1)
如果想让他从属于第一个if语句那么就需要加上一条空else语句
或者用{ }将他们包围在一个代码块内部(推荐这种)

新的_Bool类型

在C语言中一直用int类型的变量表示真/假值,C99专门针对这种类型的变量新增_Bool类型,表示真或假的变量称为布尔变量,_Bool是C语言中布尔变量的类型名。
_Bool类型的变量只能存储1(真)或0(假),如果把其他非零值的数值赋值给_Bool类型的变量,该变量会被设置成1,C把所有非零值视为真。

  int a = 10;
  _Bool b = a>0;
  if(b)
    printf("真")

如果不支持_Bool类型导致程序无法进行,可以将_Bool替换成int

switch 语句

switch语句也是一种分支语句,常常用于多分支的情况

在这里插入图片描述
在这里插入图片描述
这里我们只输入1,但是我们按照顺序将全部的case语句从上而下执行了,所以我们要实现一个case进入后退出,这时候我们需要在每个case语句结尾加上break语句

在这里插入图片描述

case决定入口而break决定出口
case后面只能接整形比如1 2 3不能接别的比如1.0 2.0等但是可以接字符,因为字符在存储中以它的ASCll码值存放

default子句

  switch()
     {
     case 1:
         printf("one");
         break;
     case 2:
         printf("two");
         break;
     default:
         printf("输入错误")break;  
     }

循环语句

while语句

在这里插入图片描述

表达式为非零也就是的情况下进入循环,循环的测试在循环体开始执行之前进行,如果测试结果一开始为假那么循环体就不会进行

   while(girlfriend == 1)
     {
         if(不分手)
           printf("有女朋友!!");
         else if(分手)
           printf("失恋")else if(又找一个)
           printf("渣男!!");
     }

如果while在表达式内部就能完成目标任务,那么循环就无事可做,这种情况下循环体就用空语句来表示,但最好不要在后面之间就接分号容易产生错误

   while((ch = getchar()) !=EOF && ch !='\n' )
           ;
break 和 continue 语句

在while循环中使用break语句用于永久停止循环,在执行完break语句后下一句就是循环正常结束的下一句语句

continue语句用于永久终止当前的这次循环,执行完这次continue语句后直接重新判断表达式真假来决定是否继续循环

这两条语句如果出现在嵌套中那么只对它所处的循环内部有效,无法影响外层的循环,也就是只能退出一层循环

在这里插入图片描述

for语句

在这里插入图片描述

   for(有一个女朋友;现在是否有女朋友;分手)
   {
       printf("不好好处对象!!");
   }

这个循环只执行了一次

for循环的三个表达式都是可选的,都可以省略,如果省略判断部分,那么判断就恒为
在for语句中使用break与continue语句,使用break语句就是直接跳出循环,
使用continue语句就直接跳到调整部分,在while语句中因为调整部分也是循环体的一部分所以continue是直接跳过

for语句的循环控制变量

不可在for 循环体内修改循环变量,防止 for 循环失去控制

  for(i=0;i<10;i++)
   {
     i=10;
   }

这种写法将会直接导致for循环终止,一般情况不可取

建议for语句的循环控制变量的取值采用“前闭后开区间”写法

  int i = 0;
     //前闭后开的写法
  for(i=0; i<10; i++)
    {}
     //两边都是闭区间
  for(i=0; i<=9; i++)
    {}

do while 语句

在这里插入图片描述

do while循环是至少执行一次

   int i = 10;
    do
    {
      printf("%d\n", i);
    }while(i<10);

循环是一个强大的编辑工具,在创建循环时一定要注意以下几点

  • 注意循环的测试条件要能使循环结束
  • 确保循环测试中的值在首次使用之前已初始化
  • 确保循环在每次迭代后都更新测试的值

goto语句

理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码
最常见的goto语句就是跳出多层循环

for(...)
    for(...)
   {
        for(...)
       {
            if(disaster)
                goto error;
       }
   }
    …
error:
 if(disaster)//处理错误

当使用break语句达不到想要的目的就使用goto语句
goto语句只能在一个函数里面跳转,不能跨函数

如果博客里面出现错误欢迎大家留言评论

从小白到武林之巅让我们一起学好c语言大法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侠客cheems

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值