文档章节

C Primer Plus 第6章 C控制语句:循环 6.7 逗号运算符

idreamo
 idreamo
发布于 2016/05/31 06:32
字数 618
阅读 56
收藏 0

程序清单 6.13 postage.c

//postage.c -- 一类邮资费率
#include <stdio.h>
int main (void)
{
    const int FIRST_OZ = 37;
    const int NEXT_OZ = 23;
    int ounces,cost;

    printf(" ounces cost\n");
    for (ounces=1,cost=FIRST_OZ;ounces<=16;ounces++,cost+=NEXT_OZ)
        printf("%5d $4.2f\n ",ounces,cost/100.0);
    return 0;
}

/*输出的前4行看上去是这样的
ounces cost 
    1 $0.37
    2 $0.60
    3 $0.83
    4 $1.06
*/

这个程序在初始化表达式和更新表达中使用了逗号运算符。这一个表达式中的逗号使ounces和cost 的值都进行了初始化。逗号的第二次出现使每次循环中ounces增加1,cost增加23(NEXT_OZ的值)。所有计算都在for循环语句中执行。

逗号运算符不只限于在for循环中使用,但是这是最常使用的地方 。

该运算符还具有两个属性:

首先,它保证被分开的表达式是按从左到右的顺序计算(换句话说,逗号是个顺序点,逗号左边产生的所有副作用都在程序运行到逗号右边之前生效)。

其次,整个逗号表达式的值是右边成员的值。

houseprice=249,500;

这并没有语法错误,C把它解释成一个逗号表达式, houseprice=249 是左子表达式,而500是右子表达式。因此整个逗号表达式的值就是右边表达式的值,并且左边的子语句把变更houseprice赋值为249.这样它的效果与下面的代码相同:

houseprice=249;

500;

另一方面,语句

houseprice=(249,500);

把houseprice赋值为500,因为该值是右子表达式的值。

程序清单6.14 zeno.c程序

/*zeno.c -- 求序列的和*/
#include <stdio.h>
int main (void)
{
    int t_ct;  //项计数
    double time,x;
    int limit;
  
    printf("Enter the number of terms you want:");
    scanf("%d",&limit);
    for(time=0,x=1,t_ct=1;t_ct<=limit;t_ct++,x*=2.0)
    {
        time+=1.0/x;
        printf("time = %f when terms = %d.\n",time,t_ct);
    }
    return 0;
}
/*下面是前几项的输出
Enter the number of terms you want:15
time = 1.000000 when terms = 1.
time = 1.500000 when terms = 2.
...
time = 1.999939 when terms = 15.
*/

可以看到,尽管不断的添加新的项,总和看起来是变化不大的。数学家们确实证明了当项的数目接近无穷时,总和接近于2.0,就像这个程序表明的那样。

© 著作权归作者所有

idreamo
粉丝 18
博文 139
码字总数 224743
作品 0
青岛
产品经理
私信 提问
【C++】第5章 循环和关系表达式 知识总结

《C++ Primer Plus》第5章知识点总结 for循环 for(initialization; test-expression; update-expression) body 语句:age = 100; 表达式:age = 100 对于 for( int i=0 ;i<5 ;i++),这种语句......

qq_37792173
2017/09/26
0
0
C Primer Plus 第6章 C控制语句:循环 6.5 for循环

for 循环把所有这三种动作(初始化、测试、更新)都放在一起。通过使用for循环,您可以用程序清单6.11中的程序来代替前一个程序 。 程序清单6.11 sweetie2.c 在关键字for之后的圆括号中包含了...

idreamo
2016/05/31
23
0
C++ Primer Plus(五)——循环和关系表达式

优先级表表明,赋值运算符是从右向左结合的 定义一个const值来表示数组中元素的个数是一个好办法 对同一条语句的同一个值递增或递减多次,C++没有定义这种行为,也就是说这条语句在不同的系统...

吃一堑消化不良
2015/11/15
83
0
C Primer Plus 第5章 运算符、表达式和语句 5.4 表达式和语句

5.4.1 表达式 表达式是由运算符和操作数组合构成的。最简单的表达式是一个单独的操作数,以此作为基础可以建立复杂的表达式。 每一个表达式都有一个值 C的一个重要属性是每一个C表达式都有一...

idreamo
2016/05/20
51
0
C Primer Plus 第6章 C控制语句:循环 6.1 再探while循环

程序清单6.1 summing.c 6.11 程序注释 这个循环的判断表达式是:status==1;==运算符是C的相等运算符。当status的值不为1时终止循环。 要使程序正确运行,在每次循环中应该为num获取一个新值,...

idreamo
2016/05/26
58
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
5
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
9
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
7
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
10
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部