精华内容
下载资源
问答
  • 看一个例子 int main(void) { int x = 10; int y = 1; int c = ({x;y;}); printf("c = %d\n",c); } 第 5 行,这样写合法吗? 答案是合法,结果输出 1 再比如 ({ int y = foo();...这就是复合语句表达式。

    看一个例子

    int main(void)
    {
        int x = 10;
        int y = 1;
        int c = ({x;y;});
        printf("c = %d\n",c);
    }
    

    第 5 行,这样写合法吗?

    答案是合法,结果输出 1

    再比如

    ({
        int y = foo();
        int z;
        if(y > 0) 
            z = y;
        else      
            z = -y;
        z;
    })
    

    这就是复合语句表达式。

    1、一对圆括号在外边,一对大括号在里面。

    2、复合语句可以有函数调用、变量赋值甚至是控制流代码块。

    3、最后一条语句必须以分号结尾。

    4,最后一条语句的值,将作为整个表达式的值

    5、如果你在大括号里的最后一句用的是没有返回值的语句,则整个表达式的返回类型为 void,即没有合法的返回值

    参考资料

    https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html

    展开全文
  • C语言复合语句

    千次阅读 2020-02-13 23:07:02
    复合语句变量定义是独立,即复合语句内定义变量不影响复合语句同一个标识符变量,且复合语句内定义变量不能供复合语句外调用,只能在复合语句外单独定义,单独使用。 但是复合语句外定义变量可以...

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    复合语句内的变量定义是独立的,即复合语句内定义的变量不影响复合语句外的同一个标识符的变量,且复合语句内定义的变量不能供复合语句外调用,只能在复合语句外单独定义,单独使用。
    但是复合语句外定义的变量可以供复合语句内调用是没有问题的。复合语句内可以定义与复合语句外同一标识符的变量,且不影响,复合语句外变量的值。

    展开全文
  • C语言的控制语句

    2020-04-16 11:44:33
    c语言控制语句 C语言语句 语句是构造程序的基本成分。分号是C语言语句的结束符号,一条C语言 ...注意: C语言的最简单的语句是空语句,就一个分号 ; 。 执行空语句的效果是消耗执行空语句消耗的时间而已。 复合语...

    c语言控制语句

    在这里插入图片描述C语言语句
    语句是构造程序的基本成分。分号是C语言语句的结束符号,一条C语言
    语句必然后跟一个分号,任何C语言表达式都可以通过添加分号的方式
    转换成C语言语句。一个C语言语句你可以理解成一条完整的计算机要执行
    的指令。
    如 a = 2 为表达式
    a = 2; 为语句
    注意: C语言的最简单的语句是空语句,就一个分号 ; 。
    执行空语句的效果是消耗执行空语句消耗的时间而已。

    复合语句
    使用花括号括起来的两个或更多的语句,可以称复合语句为代码块。
    a = 2; //语句
    b = 3; //语句
    //下面用{}括起来的是一条复合语句
    {
    a = 2;
    b = 3;
    }
    c语言的控制语句
    分类:顺序语句、分支语句、循环语句
    顺序语句:
    从main主入口开始一行一行向下执行

    return 语句
    该语句有两种使用方式,第一种用于终止当前函数,然后返回值调用当前函数的函数中。
    在第二种中,return用于向调用当前函数的函数返回一个值(注:只能有一个返回值,不能有多个返回值)。

    分支语句:
    单分支:if …else
    多分支:switch … case
    循环语句:
    for 循环
    while循环
    do…while循环
    goto 循环
    辅助语句:
    break 跳出
    continue 继续

    分支语句

    单分支: if … else
    格式: if (逻辑表达式)
    {
    语句1;//逻辑真执行
    }
    else
    {
    语句2;//逻辑假执行
    }
    执行流程:首先判断逻辑表达式的值,如果为真,则执行语句块1,如果为假,则执行语句块2.
    说明:
    1、
    最简形式 ==》(a>b)?xx:yyy;
    条件表达式的一般形式为:表达式1?表达式2:表达式3
    2、else 是可以省略,if(逻辑表达式) {}
    3、{} 是可以省略的,如果只有一条语句情况下。
    4、支持阶梯形式
    5、支持嵌套形式,建议最多不要超过四层嵌套。

    if(逻辑表达式)
    {
        语句块;
    }
    
    if(逻辑表达式1)
    {
        if(逻辑表达式2)
        {
            语句块;    
        }
    }
    
    if(逻辑表达式1)
    {
        if(逻辑表达式2)
        {
            语句块;    
        }
    }
    else
    {
        语句块;
    }
    
    if(逻辑表达式1)
    {
        if(逻辑表达式2)
        {
         语句块;    
        }
        else
        {
         语句块;    
        }
    }
    else
    {
        语句块;
    }
    

    循环语句

    循环:重复执行某些其他语句(循环)的一种语句。
    C语言中,每个循环都有一个控制表达式。每次执行循环体时都要对
    控制表达式进行计算。如果表达式为真,也就是值不为零,那么继续
    执行循环。

    循环语句:
    for while do…while goto
    1、for循环语句
    标准格式
    for( 表达式1; 表达式2;表达式3 )
    {
    //循环体语句
    }
    执行过程:
    1、首先执行表达式1,且只执行一次。
    2、根据表达式2的逻辑值判断是否执行循环体
    如果表达式2逻辑值为真则执行循环体
    如果表达式2逻辑值为假则循环停止。
    3、循环体语句执行完毕,默认需要执行表达式3;
    4、返回2位置继续判断表达式2逻辑值。
    注意事项
    1、循环体语句的{}可以省略,但是要求是单条语句。
    2、每个表达式之间是用’;‘隔开,不能是’,’ ‘.’ ‘:’.
    3、表达式1,可以省略,’;‘不能省略,但是必须提前执行。
    表达式3,可以省略,但是必须在循环体中执行。
    表达式2,可以省略,但是’;'不能省略,表示死循环。==>for(; ; )
    4、for循环语句支持嵌套形式,建议不要超过4层循环。
    5、for循环的中断辅助控制: break 关键字 ==》跳出一层循环。
    for循环的继续执行控制: continue关键字 ===》继续从循环位置执行。
    6、for循环的()结尾部分没有 ‘;’
    练习:
    1、使用for循环完成ascii码中所有英文字母的输出。
    2、使用for循环完成99 乘法表。

    while循环格式:

    while(表达式)
    {
        循环体;
    }
    

    执行流程:
    首先判断逻辑表达式,如果为真则执行循环体如果为假循环结束。
    表达式:可以是逻辑表达式也可以是赋值表达式,关系表达式

    注意事项:
    1、while循环()之后不能有 ‘;’
    2、while的{}可以省略,要求循环体语句是一条语句。
    3、while循环的死循环为while(1),但是尽量不要空转。
    4、while循环支持嵌套形式
    5、while循环的中断控制 ==》break 跳出一层循环
    继续执行 ==》continue 继续从循环位置执行。

    do … while循环语句
    格式:

    do
    {
        循环体;
    } while (表达式);
    

    执行过程:
    先执行循环体语句,再判断逻辑表达式的值。如果为真,执行循环如果为假,循环结束.循环体至少执行一次
    注意事项:
    1、必须在while()之后加上一个";"
    2、一定要区别while与do … while的差异
    while是先判断后执行
    do_while是先执行后判断
    3、do … while支持嵌套使用,最多不要超过4层。
    4、在 do … while中支持break跳出,continue继续,return结束函数。

    goto 循环 需要标号支持
    eg: 标号如何定义:
    flag: ===>标号 xxx:
    语句块
    goto flag; ==>执行到该语句返回到上层的flag标记位置继续执行。

    执行过程:按照顺序执行遇到goto 跳转执行。

    注意事项:
    1、不支持break、continue循环控制关键字return 可以结束当前循环。
    2、标号之后不能是变量的定义。
    3、goto 语句不能使用在变量的定义和声明位置。
    4、goto 语句一般在编程过程中用于错误处理。

    展开全文
  • while循环的通用形式如下:while (expression) statementstatement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。程序中的expression部分都使用关系表达式。也就是说,expression是值之间的...

    while循环的通用形式如下:

    while (expression)      statement

    statement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。程序中的expression部分都使用关系表达式。也就是说,expression是值之间的比较,可以使用任何表达式。如果expression为真(或者更一般地说,非零),执行statement部分一次,然后再次判断expression。在expression为假(0)之前,循环的判断和执行一直重复进行。每次循环都被称为一次迭代(iteration),如图6.1所示。

    0ae71f8100519c268cc1ecd72b5fd58a.png

    Structure of the =while= loop.

    1 终止while循环

    while循环有一点非常重要:在构建while循环时,必须让测试表达式的值有变化,表达式最终要为假。否则,循环就不会终止(实际上,可以使用break和if语句来终止循环,但是你尚未学到)。考虑下面的例子:

    index = 1;while (index < 5){    printf("Continue!")}

    上面的程序段将打印无数次Continue。为什么?因为循环中index的值一直都是原来的值1,不曾变过。现在,考虑下面的程序段:

    index  1;while (--index < 5) {    printf("Continue!")}

    这段程序也好不到哪里去。虽然改变了index的值,但是改错了!不过,这个版本至少在index减少到其类型可容纳的最小负值并变成最大正值时会终止循环(第3章3.4.2节中的toobig.c程序解释过,最大正值加1一般会得到一个负值;类似地,最小负值减1一般会得到最大正值)。

    2 何时终止循环

    要明确一点:只有在对测试条件求值时,才决定是终止还是继续循环。例如,下面的程序:

    // when.c -- when a loop quits#include int main(void){    int n = 5;    while (n < 7)                    // line 7    {        printf("n = %d", n);        n++;                         // line 10        printf("Now n = %d", n);   // line 11    }    printf("The loop has finished.");    return 0;}

    执行后输出如下:

    n = 5

    Now n = 6

    n = 6

    Now n = 7

    The loop has finished.

    在第2次循环时,变量n在第10行首次获得值7。但是,此时程序并未退出,它结束本次循环(第11行),并在对第7行的测试条件求值时才退出循环(变量n在第1次判断时为5,第2次判断时为6)。

    3 while:入口条件循环

    while循环是使用入口条件的有条件循环。所谓“有条件”指的是语句部分的执行取决于测试表达式描述的条件,如(index < 5)。该表达式是一个入口条件(entry-condition),因为必须满足条件才能进入循环体。在下面的情况中,就不会进入循环体,因为条件一开始就为假:

    index = 10;while (index++ < 5){    printf("Have a fair day or better.")}

    把第1行改为:

    index = 3;

    就可以运行这个循环了。

    4 语法要点

    使用while时,要牢记一点:只有在测试条件后面的单独语句(简单语句或复合语句)才是循环部分。程序清单6.3演示了忽略这点的后果。缩进是为了让读者阅读方便,不是计算机的要求。

    /* while1.c -- watch your braces       *//* bad coding creates an infinite loop */#include int main(void){    int n = 0;    while (n < 3)        printf("n is %d", n);        n++;    printf("That's all this program does");    return 0;}

    输出为:

    n is 0n is 0n is 0n is 0n is 0...

    屏幕上会一直输出以上内容,除非强行关闭这个程序。

    虽然程序中缩进了n++;这条语句,但是并未把它和上一条语句括在花括号内。因此,只有直接跟在测试条件后面的一条语句是循环的一部分。变量n的值不会改变,条件n <3 一直为真。该循环会一直打印n is 0,除非强行关闭程序。这是一个无限循环(infinite loop)的例子,没有外部干涉就不会退出。记住,即使while语句本身使用复合语句,在语句构成上,它也是一条单独的语句。该语句从while开始执行,到第1个分号结束。在使用了复合语句的情况下,到右花括号结束。要注意放置分号的位置。例如,考虑程序清单6.4。

    #include int main(void){    int n = 0;    while (n++ < 3);             /* line 7 */        printf("n is %d", n);  /* line 8 */    printf("That's all this program does.");    return 0;}

    改程序的输出为:

    n is 4

    That's all this program does.

    如前所述,循环在执行完测试条件后面的第1条语句(简单语句或复合语句)后进入下一轮迭代,直到测试条件为假才会结束。该程序中第7行的测试条件后面直接跟着一个分号,循环在此进入下一轮迭代,因为单独一个分号被视为一条语句。虽然n的值在每次循环时都递增1,但是第8行的语句不是循环的一部分,因此只会打印一次循环结束后的n值。

    在该例中,测试条件后面的单独分号是空语句(null-statement),它什么也不做。在C语言中,单独的分号表示空语句。有时,程序员会故意使用带空语句的while语句,因为所有的任务都在测试条件中完成了,不需要在循环体中做什么。例如,假设你想跳过输入到达第1个既不是空白字符也不是数字的位置,可以这样写:

    while (scanf("%d", &num) == 1)  ;    /* skip integer input */

    只要scanf()读取一个整数,就会返回1,循环继续执行。

    注意,为了提高代码的可读性,应该让这个分号独占一行,不要直接把它放在测试表达式同行。这样做一方面让读者更容易看到空语句,一方面也提醒自己和读者空语句是有意而为之。处理这种情况更好的方法是使用continue语句。

    展开全文
  • 1. 表达式语句 在表达式后边加一个分号“;”就构成了表达式语句 ,如: a=++b*9; x=8;y=7; ++k; 可以一行放一个表达式形成表达式语句,也可以一行放多个表达式形成表达式语句,这时每个表达式后面都必须带...
  • C语言的语句分类

    2021-02-05 17:53:26
    C语言中语句的分类 今天已经是我学习c语言的第十五天了,从今天起我... 4,复合语句。 5,空语句。 人们日常生活中的语句,主要结构又分了三种,顺序结构,循环结构,分支结构。 本人第一次写文章,不喜勿喷。 ...
  • C语言的基本语句结构

    2020-12-02 16:06:51
    1.表达式语句 在表达式后加一个分号“;...复合语句由一对花括号“{ }”将多个语句括起来所组成。例如: { a=b+c; x=y%a; printf("a=%b,x=%d\n,a,x); } 3.控制语句 控制语句是由控制结构组成语句,完成特定
  • C语言中,我们知道放在函数中普通变量值只能通过return语句返回值,但是如果只是把复合语句放在主函数中,则复合语句变量定义又该如何呢?我们来看下边一个例子: #include <conio.h> #include &...
  • 从程序流程角度看,程序可以分为三种基本结构:顺序结构、分支结构、循环结构。...C语句可以分为五类,分别是表达式语句、函数调用语句、控制语句、复合语句和空语句。1.表达式语句表达式语句由表达式加上分...
  • C语言 | while语句

    2021-04-01 10:47:58
    其中语句就是循环体,可以是一个简单语句,也可以是复合语句。执行循环体次数是由循环条件控制,这个循环条件就是上面一般形式中“表达式”,也称为循环条件表达式。 while循环可以简单记为,只要当循环...
  • c语言学习之语句

    2016-01-06 19:51:19
    c语言的语句和我们平时说的语句类似,都是由一个个变量,常量,关键字,保留字等等组成,可以被机器识别一串代码,在c语言的语句有这几类 空语句:单独一个分号就是一个空语句,通常在某个位置需要一段语句,但是有...
  • 01选择语句C语言有两种选择语句,if语句和switch语句,if语句是用来实现两...(3)语句1和语句2可以是一个简单语句,也可以是一个复合语句,还可以是另一个if语句。(4)方括号内部分(即else子句)为可选,既...
  • C语言 ({}) 复合语句表达式

    千次阅读 2018-09-19 16:52:57
    C语言中{}包裹多个语句为复合语句。 加上()则变成了表达式语句,就可以进行赋值 举例:  int n = ( { int _n = func(); _n&gt;0?_n:0});     对内存stirng进行scanf,可以使用sscanf(str,format, .....
  • 一、表达式在C语言中,常量、变量、函数调用以及按C语言语法规则用运算符把运算数连接起来式子都是合法表达式 。最后一类可以理解为运算符和运算对象组合。例如:算术表达式 = 算术运算符 + 运算对象赋值...
  • 先上代码,对于基于f-statck协议栈改进项目时候,看到一段代码,内核里面很多宏也经常使用这种复合语句,看了相关资料和博客,写下来自己理解: static int (*real_clock_gettime) (clockid_t , struct ...
  • 一、表达式在C语言中,常量、变量、函数调用以及按C语言语法规则用运算符把运算数连接起来式子都是合法表达式 。最后一类可以理解为运算符和运算对象组合。例如:算术表达式 = 算术运算符 + 运算对象赋值...
  • C语言循环语句

    2015-07-29 20:22:27
    C语言循环语句中有一个特殊循环,do-while 循环。...注意:循环体如果包括有一个以上语句,则必须用{}括起来,组成复合语句。 其实 do-while 和 while 循环是在一般情况下是可以相互转换
  • C语言 | 语句概述

    2021-03-18 08:46:03
    C语言语句作用和分类 1、9种控制语句 if()...else.. //条件语句 for()......while()......do...while() //循环语句 continue //结束本次循环语句 break //中止执行switch或循环语句 ...5、复合语句 可以
  • a为假 1表达式语句 由一个表达式加一个分号构成 只有分号组成语句称为空语句 空语句是什么也不执行语句在程序中空语句可用来作空循环体 可以用{}把一些语句括起来称为复合语句 { z=x+y; t=z/100; printf%f,t; } ...
  • c语言语句

    2016-11-04 23:16:49
    C语句分为以下五类:控制语句、函数调用语句、表达式语句、空语句、复合语句  (1)控制语句。控制语句用于完成一定控制功能。 C只有9种控制语句它们是:  if() … else … (条件语句)  for() … ...
  • 什么是复合语句表达式?...本文再深入一步,介绍一种更复杂一点儿用法:复合语句作为表达式,然后引出一个常用编码技巧。 A compound statement enclosed in parentheses may appear as an expression
  • {//复合语句,若干条语句集合 语句1; 语句2; } 如果条件成立执行大括号里语句,不成立大括号里语句不执行 if(条件表达式) { 语句1; 语句2; } else { 语句1; 语句2; } if else语句作用,如果...
  • C语言语句概述

    2014-04-29 18:21:35
    表达式语句 函数调用语句 控制语句 复合语句 空语句 1) 表达式语句 表达式语句由表达式加上分号“;”组成。其一般形式为:  表达式; 执行表达式语句就是计算表达式值。 例如: x=y+z; /* 赋值语句 */ ...
  • C语言 | 03 基本语句

    2019-03-18 15:48:23
    3.1 表达式语句,空语句,复合语句 3.1.1 表达式语句 C程序设计语言表达式语句由表达式加上分号“;”组成。 分别由以下几种类:算术表达式、赋值表达式、逗号表达式、关系表达式、逻辑表达式 等... 其一般...
  • 复合语句 (块语句Block;复合语句举例;C语言语句使用说明;关系运算符 (Relational Operators;关系表达式;逻辑运算符 (Logical Operators;逻辑运算规则;逻辑表达式;逻辑表达式举例;逻辑表达式求值特点;分支程序设计;if...
  • 复合语句1、复合语句同C语言或其他语言相同,Java语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”开始,闭括号“}”结束。在前面的学习中已经接触到了这种复合语句。例如在定义一个...
  • 因此宏体不能为简单的括弧包围的复合语句, 因为如果这样, 调用的时候就会发生语法错(明 显是一个单独语句, 但却多了一个额外的分号), 就像在if/else 语句的if 分支中多了一个else 分句一样。  所以, 传统...
  • 本篇作为最后一篇,将介绍C语言中最为复杂部分,也就是控制语句、指针和复合数据类型等内容。控制语句通过上面知识只能写从上往下依次执行程序。显然这个不能满足实际开发需求,比如有时候我们要根据不同...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 843
精华内容 337
关键字:

c语言的复合语句

c语言 订阅