/*
编程求1+3+5+7+9+11。
*/
#include <stdio.h>
#include <stdlib.h>int main( void )
{printf ("1+3+5+7+9+11=") ; printf ("%d\n" , 1 + 3 + 5 + 7 + 9 + 11 ) ;system("PAUSE");    return 0;}

这个题目的主要目的有两个:

1.掌握写整数常量的方法。这个不难。

2.透彻理解C语言中表达式的意义。这个有必要多说几句。

在代码中,“1 + 3 + 5 + 7 + 9 + 11”这个表达式的意义有两个:第一,是“命令”计算机计算“1 + 3 + 5 + 7 + 9 + 11”;第二,这个表达式本身同时表示计算的结果。

C语言是一种命令式语言(Imperative language,亦称强制式语言),这种语言通过指明一系列可执行的运算并通过运算的次序来描述计算过程,学习C语言就是学习使用C语言“命令”计算机。如果没有意识到这点,就不可能理解用C语言编程的本质。所以在学习C语言时要特别注意体会可以用C语言向计算机发出哪些“命令”。

“1 + 3 + 5 + 7 + 9 + 11”这个表达式要求计算机进行一系列加法运算。C语言的运算符都是要求计算机执行的动作,对计算机发出的最基本的命令都是通过运算符表示的。代数中的运算式是要人自己算,代码中的表达式是要求计算机计算,这是本质上的不同。

表达式都有一个普遍的作用——求值,即使一个表达式不求值,也称它求的是一个void类型的值(void类型就是没有值的类型)。而且表达式本身也代表它所求得的值。

所以,表达式“1 + 3 + 5 + 7 + 9 + 11”的另一层含义是,它就是计算机所求得的那个值。不少初学者领悟不到这点,他们往往习惯性地把这个值存储到一个变量中才放心,从而把代码写成

/*
编程求1+3+5+7+9+11。
*/
#include <stdio.h>
#include <stdlib.h>int main( void )
{int he ; //没必要定义这个变量 he = 1 + 3 + 5 + 7 + 9 + 11 ; //这里多了一次赋值运算 printf ("1+3+5+7+9+11=") ; printf ("%d\n" , he ) ;system("PAUSE");    return 0;}

仔细思考一下不难发现,he这个变量根本没有必要。既然没有必要,为什么要设置这样一个变量呢?而且与前面的代码相比,这段代码多了一个赋值运算。

代码应该简洁,如果没有理由,不应该写任何不必要的东西。

总结:

  • 运算符表示命令计算机进行的计算;
  • 表达式本身有值,这个值可以直接使用。并不一定需要把这个值赋值给变量再使用,这样的代码更直接、更简洁。

转载于:https://www.cnblogs.com/KBTiller/archive/2011/05/06/2038452.html

充分理解表达式——《狂人C》习题解答2(第二章习题5)相关推荐

  1. 《C++ Primer》第五版课后习题解答_第二章(1)(01-08)

    系统环境: windows 10 1703 编译环境:Visual studio 2017 2.1 int 整型 16位 long 长整型 32位 long long 长整型 64位 short 短整 ...

  2. 统计学习导论:基于R应用——第二章习题

    目前在看统计学习导论:基于R应用,觉得这本书非常适合入门,打算把课后习题全部做一遍,记录在此博客中. 第二章习题 1. (a) 当样本量n非常大,预测变量数p很小时,这样容易欠拟合,所以一个光滑度更高 ...

  3. 计算机组成原理第二章测试题,计算机组成原理第二章习题答案.doc

    计算机组成原理第二章习题答案 第2章?习题及解答 2-2?? 将下列十进制表示成二进制浮点规格化的数(尾数取12位,包括一位符号位:阶取4位,包括一位符号位),并写出它的原码.反码.补码三和阶移尾补四 ...

  4. Mysql第二章习题

    Mysql第二章习题 1.为什么需要系统数据库?用户是否可以删除系统数据库?     不能删除的是系统数据库,系统数据库里存储的一些系统信息,比如说你新建的数据库等数据库实例和一些基本信息等都存储在系 ...

  5. 计算机网络第二章习题

    计算机网络第二章习题 习题对应课本:Computer Networks (Fifth Edition) - Andrew S. Tanenbaum 2.A noiseless 8-kHz channe ...

  6. java第二章选择题_Java第二章习题讲解(2)

    第二章习题讲解(1) 3.阅读或调试程序 (1) 上机运行下列程序,注意观察输出的结果.Java public class E{ public static void main(String args ...

  7. Matlab第二章选择题填空题,matlab及其在大学物理中的应用第二章习题答案.doc

    matlab及其在大学物理中的应用第二章习题答案.doc MATLAB及其在大学物理中的应用第二章习题答案作者荆楚理工吴世华21试求下列极限(1)(2)XX193LIM523LIMXXX ...

  8. 《工程伦理与学术道德》第二章习题

    <工程伦理与学术道德>第二章习题 课后习题 讨论题 课后习题 讨论题 第一题: 职业责任不等于伦理责任.职业责任是工程师履行本职工作时应尽的岗位 (角色)责任,而伦理责任是为了社会和公众利 ...

  9. 计算机网络第二章选择题,计算机网络技术第二章习题

    计算机网络技术第二章习题 一.填空题 1.信道是_________________________,信道容量是指_________________,信道带宽是指­­­­­­­_____________ ...

最新文章

  1. oracle数据库常用的99条查询语句
  2. [na]出口选路pbr小实验视频
  3. 106. Leetcode 122. 买卖股票的最佳时机 II (动态规划-股票交易)
  4. mysql left join 结果怎么这么慢
  5. 用google mock模拟C++对象
  6. 2021考研计算机网络,2021考研:计算机网络复习重点
  7. Java中发邮件的6种方法
  8. 数据库的四大特性和事务隔离级别
  9. 干货 | ZooKeeper 源码和实践揭秘
  10. C语言 Condition variables
  11. OMRON PLC使用技巧总结
  12. Max Core Frequency 异常显示为-1.80GHz -- Intel-Extreme-Tuning-Utility-Intel-XTU (英特尔 XTU)
  13. Algorithm:三数之和为0
  14. java 渲染_Java字体渲染
  15. Win10禁止更新设备驱动的几种方式
  16. 使用容联云通讯实现短信验证登入
  17. 对于多线程程序,单核cpu与多核cpu是怎么工作的
  18. Mac 此账户尚未用于app store_精品良心Mac应用下载网站
  19. python爬取付费直播的视频_教你用20行代码爬取直播平台弹幕(附源码)
  20. codeblocks(自带编译器的zip版)下载

热门文章

  1. css position的父级,css position absolute 相对于父元素的设置方式
  2. 敲代码括号技巧_阅码神奇Souceinsight使用小技巧总结
  3. android ffmpeg 编码h264,Mac系统下ffmpeg+h264+flv编码的android录制屏幕实现2
  4. PHP 毫秒级定时器,实现php毫秒定时器方法详解
  5. gltf与glb格式转换 gltf-pipeline、binary-gltf-utils
  6. 概率论与数理统计--第三章
  7. 数据结构和算法:(3)3.2线性表的链式存储结构
  8. boost--文件、目录操作
  9. 一个LabVIEW控件,生成模拟波形效果
  10. 4行Python代码生成图像验证码