zoukankan      html  css  js  c++  java
  • 编程语法分析之从表达式说起

    表达式,一般有操作数和操作符组成。要问表达式和语句的区别,百度截取的一个回答:

    在c语言中,分号“;”是语句结束的标志,就相当于中文中的句号。表示一条语句的结束。反过来,“;"是语句的象征,本身 ";"就表示一条语句,称为空语句,一般用于占位。比如while (1)  ; ;

    第1个分号表示的是空语句,第2个分号表示的是语句结束符。主要区分表达式和语句的区别,在C语言中带分号的就是语句,不带分号的即为表达式。

    而在Accelerated C++ 一书中说到:“当一个表达式后面紧跟一个分号时,就表明系统让我们丢掉这个返回值 ”见第《Accelerated C++》0章的第7节。

    也就是说,表达式从宏观上讲具体两大作用:

    1、表达式一定会返回一个值!(有且只有一个值)

    2、整个表达式在计算时产生的变化。这个作用往往别称之为表达式的副作用!

       于是我想了到宏,宏就没有分号,如:带参数的宏还能像函数一样返回一个值!结合表达式的第一个作用就很好理解了。

    还有在if判断里也是(没有分号的)表达式,如if(1+(a = b -1))这个表达式看起来奇葩,但是也是符合语法的。a = b - 1就是一个表达式,他其实就一个值!只不过这个表达式的返回值和a的值是一致的。所以很多复杂的表达式如果你将其看成一个值,就会简化不少。当然如何看,必须结合“优先级”以及“结合律”来看了。具体内容请看下节,《编程语法分析之“优先级”和“结合律”》。

    再联想一下函数,函数分为有返回值和没有返回值的函数。

    一、有返回值的函数和“表达式”一样,有两大作用:

    1、有返回值的函数一定会返回一个值!(有且只有一个值)

    2、整个函数内容在计算时产生的变化。

    二、没有返回值的函数就好比“语句”不在结果,而在乎过程中发生的变化。

    我在百度上找到一个回答,深以为然:

    wpsA157.tmp

    于是乎,有了一点感悟:(题外话)

    一个问题想不通,无外乎两点:

    1、没有认清本质

    2、需要根据条件,分类讨论(总有例外)

  • 相关阅读:
    SharePoint 2013 图文开发系列之自定义字段
    SharePoint 2013 图文开发系列之Visual Studio 创建母版页
    SharePoint 2013 图文开发系列之代码定义列表
    SharePoint 2013 图文开发系列之计时器任务
    SharePoint 2013 图文开发系列之应用程序页
    SharePoint 2013 图文开发系列之事件接收器
    SharePoint 2013 图文开发系列之可视化WebPart
    SharePoint 2013 图文开发系列之WebPart
    SharePoint 2013 对二进制大型对象(BLOB)进行爬网
    SharePoint 2013 状态机工作流之日常报销示例
  • 原文地址:https://www.cnblogs.com/douzi2/p/5113822.html
Copyright © 2011-2022 走看看