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、需要根据条件,分类讨论(总有例外)

  • 相关阅读:
    Python学习(四十三)—— Djago-admin管理工具
    Python心得基础篇【1】入门篇
    ServletRequest接口和HttpServletRequest接口
    Java swing
    postgresSQL指令
    Oracle数据库相关
    Java 接口
    Java 求一段代码运行所需要的时间——模板方法设计模式
    Java SE基础巩固
    Java开发环境
  • 原文地址:https://www.cnblogs.com/douzi2/p/5113822.html
Copyright © 2011-2022 走看看