目录
- 一、程序中的辅助语句(上)
 - 二、程序中的辅助语句(下)
 
一、程序中的辅助语句(上)
C语言中的注释
- 注释是帮助理解程序而编写的文本
 - 注释本身对程序功能无任何贡献注释分为单行注释和多行注释
 - 注释分为单行注释和多行注释
 
注意:单行注释不一定被编译器支持
注释的语法
单行注释
- 从 // 开始到当前行结束的所有文本(注释范围只涉及一行文本)
 - 单行注释中可以重复出现 // (无特殊含义,被看作注释文本)
 
多行注释
- 从 */ 开始到 */ 结束的所有文本(注释范围可以涉及多行文本)
 - 多行注释不支持嵌套(错误用法:/* … abc … /* d */ …*/)
 
示例
int main()
{
    /*
        多行注释
        定义一个变量,并且初始化
    */
    int i = (int) (10.3 / 3);
    printf("i = %d\n", i);
    //单行注释
    /*
        // 多行注释中嵌套单行注释,无意义
    */
    return 0;
}
赋值语句
连续赋值
- 多个赋值操作组合在一起,如: a = b = c …
 
复合赋值
- 数学运算与赋值操作组合在一起
 - 如:a += 1,a -= 2,a *= 3,a /= 4
 
上代码:
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 10;
    a = b = b + 1; // a=>11  b=>11
    printf("a = %d, b = %d\n", a, b);
    a += 1;
    a -= 2;
    a *= 3;
    a /= 4;
    // a => 7
    printf("a = %d\n", a);
    /*
        复合赋值与连续赋值相结合
    */
    a += b -= 1;
    printf("a = %d, b = %d\n", a, b);
    return 0;
}
下面为输出结果:

三目运算符(条件运算符)
- 本质:if … else … 语句的缩写版
 - 语法:(条件) ? (为真时的语句) : (为假时的语句)
 

注意事项
- 三目运算表达式最后产生的是一个值,因此整个表达式不能作为左值使用
 
逗号表达式
- 逗号(,)是一种特殊的运算符
 - 逗号可以将多个语句连接起来组合成一个语句
 - 语法:语句1,语句2,语句3,…,语句n
 
下面代码就是采用逗号表达式将多个语句连在一起:
int main()
{
    int a = 0;
    int b = 1;
    a = 2, b = 3, printf("a + b = %d\n", a + b);
    return 0;
}
逗号表达式补充说明
- 逗号 (,) 优先级最低,逗号表达式可以配合括号使用
 - 逗号表达式的意义是将多个语句连接为一个语句
 - 逗号表达式从左向右开始执行语句
 - 逗号表达式的值就是最右边语句的值
 
下面的代码就是综合逗号表达式和三目运算符:
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 10;
    int c = 0;
    a = (b < 10) ? 1 : 2;
    printf("a = %d\n", a);
    (a < 5) ? (a = 5) : (a = 0);
    printf("a = %d\n", a);
    /*
    ((a == 5) ? a : b) = 10; // ERROR
    */
    a = b = c = 0;
    c = (a = 2, b = 3, a + b);
    printf("a = %d\n", a);
    printf("b = %d\n", b);
    printf("c = %d\n", c);
    c -= a;  // c = c - a;
    printf("c = %d\n", c);
    return 0;
}
下面为输出结果:

小结
- 注释是帮助理解程序而编写的文本,对程序功能无贡献
 - 数学运算与赋值操作可以组合在一起使用
 - 三目运算符可以理解为 if …else .. .的缩写形式
 - 逗号表达式的意义是将多个语句连接为一个语句
 
二、程序中的辅助语句(下)
自增 (++) 与自减 (–) 运算符
前置:先自增(自减),再取值
- ++v;
 - –v;
 
后置:先取值,再自增(自减)
- v++;
 - v–;
 
举一个简单的例子,
v = 1, y = ++v; 执行完之后v = 2, y = 2;
v = 1, y = v++; 执行完之后v = 2, y = 1;
注意事项
- 自增(自减)操作符的结合方向 “从右至左”
 - 不要在一个表达式中混合四则运算与自增(自减)运算
 
上代码:
#include <stdio.h>
int main()
{
    int a = 0;
    int c = 1;
    a = -c++;  // c -> 2
    printf("a = %d\n", a);
    a = +(++c); // +(++c); c -> 3
    printf("a = %d\n", a);
    a = -c--;  // c -> 2
    printf("a = %d\n", a);
    printf("c = %d\n", c);
    return 0;
}
下面为输出结果:

goto – 程序世界中的“破坏者”
- goto是C语言中的一个关键字,用于无条件暴力跳转
 - goto的跳转位置由标签指定(具体指定某行代码)
 - 标签就是一个C语言中的合法命名,并以冒号(∶)结束
 - 语法:
goto LABEL; 
如下所示:
c = 1;
goto LABEL;
c = 2;
LABEL:
    printf("c = %d\n",c);
注意事项
- goto在程序中极具破坏性,会破坏程序结构,造成程序难以理解和维护,现代软件开发已禁用goto。
 
上代码:
#include <stdio.h>
int main()
{
    int a = 0;
    int c = 1;
    if( a + c > 0 )
    {
        printf("a = %d, c = %d\n", a, c);
        goto ELSE;
    }
    else
    {
        ELSE: printf("%d + %d = %d\n", a, c, a + c);
        goto FOR;
    }
    for(c=10; c>0; c--)
    {
        FOR:
        printf("c = %d\n", c);
    }
    return 0;
}
下面为输出结果:

可以看到 c 输出为1,这是因为使用 goto 语句后,直接调到 FOR 标签所在的位置,导致了 for 循环没有执行。
小结
- 前置 ++ 和 — :先自增(自减),再取值
 - 后置 ++ 和 –:先取值,再自增(自减)
 - goto 是C语言中的一个关键字,用于无条件暴力跳转
 - 现代软件开发已禁用goto(弊大于利)
 
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)