zoukankan      html  css  js  c++  java
  • C语言中的副作用、序列点、完整表达式

    C语言中有个术语叫:副作用

    副作用其实是对数据对象或文件的修改。(数据对象的定义是:用于存储值的数据存储区域)

    例如语句 states = 50;

    从C语言的角度来讲:这个赋值表达式的副作用是将变量的值设置为50;目的是对表达式求值;

    但是使用赋值表达式的主要目的(真正目的)就是使用其副作用(将变量的值设置为50);

    除此之外,递增、递减运算符也有副作用;我们使用它们其实主要目的是使用其副作用。即递增、递减的副作用;

    例如printf()函数,我们使用它的目的是使用其副作用,其副作用是显示信息。它从C语言角度来说,目的是返回待显示字符的个数。

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    序列点:

    是程序执行的点,所有的副作用都在进入下一步之前发生;

    语句中的分号标记了序列点;

    当然不一定要分号才表示序列点;

    完整表达式的结束也是一个序列点

    例如:

    while (guests++<10)

      printf("%d ",guests)

    上面程序当中:guests++<10 就是一个完整的表达式,该表达式的结束也是一个序列点。

    guests++<10的意思是guests先跟10比较(比较会得到布尔值True、False,这个过程是求值,也就是C语言角度来说的目的),再递增(把guests的值加1,即对数据对象或文件的修改,即副作用。这个副作用其实也是我们编写程序角度的主要目的。)。

    guests简单概括就是先比较(求值)再递增。

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    完整表达式:

    这个表达式不是另一个表达式的子表达式;

    表达式语句中的表达式,循环条件的测试条件表达式,都是完整表达式。

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    补充一下表达式expression、语句statement的概念:

     

    表达式:

    表达式是由运算符和运算对象组成的。
    运算对象是运算符操作的对象。
    对简单的表达式是一个单独的运算对象。
    表达式最重要的特性之一就是每个表达式都有一个值。
    要获得这个值,必须根据运算优先级规定的顺序去操作。

     

    语句

    语句是C语言的基本构建块。
    一条语句相当于一条完整的计算机指令。
    在C中,大部分语句都以分号结尾。
    最简单的语句是空语句
    真正有效的语句是可以改变值或调用函数;

    注意:语句和表达式不能划等号;
    语句的分类:表达式语句、迭代语句、跳转语句、声明等。

    声明创建了名称和类型,并为其分配内存空间和位置;

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • 相关阅读:
    17111 Football team
    Train Problem I (HDU 100题纪念)
    迷宫问题
    图形点扫描
    看病要排队(stl)
    水果
    Prime Ring Problem
    N皇后问题
    2^x mod n = 1
    Queuing
  • 原文地址:https://www.cnblogs.com/grooovvve/p/9826127.html
Copyright © 2011-2022 走看看