| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 700 人关注过本帖
标题:逗号运算符
取消只看楼主 加入收藏
linsd2001
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-10-11
收藏
 问题点数:0 回复次数:0 
逗号运算符

逗号运算符通常用来分隔变量说明、函数参数、表达式以及for语句中的元素。下例给出了使用逗号的多种方式:
#include <stdio.h>
#include <stdlib.h>
void main(void);

void main ()
{
/ * Here, the comma operator is used to separate three variable declarations. * /
int i, j, k;
/ * Notice how you can use the comma operator to perform
multiple initializations on the same line. * /
i=0, j=1, k=2;
printf("i= %d, j=%d, k= %d\n", i, j, k);
/ * Here, the comma operator is used to execute three expressions
in one line: assign k to i, increment j, and increment k.
The value that i receives is always the rigbtmost expression.* /
i= ( j++, k++ );
printf("i=%d, j=%d, k=%d\n", i, j, k);
/ * Here, the while statement uses the comma operator to assign the value of i as well as test it. * /
while (i=(rand() % 100), i !=50)/*随即数*/
printf("i is %d, trying again... \n", i)
printf ("\nGuess what? i is 50!\n" )
}

请注意下述语句:
i:(j++,k++)
这条语句一次完成了三个动作,依次为:
(1)把k值赋给i。这是因为左值(lvaule)总是等于最右边的参数,本例的左值等于k。注意,本例的左值不等于k++,因为k++是一个后缀自增表达式,在把k值赋给j之后k才会自增。如果所用的表达式是++k,则++k的值会被赋给i,因为++k是一个前缀自增表达式,k的自增发生在赋值操作之前。
(2)j自增。
(3)k自增。
此外,还要注意看上去有点奇怪的while语句:
while (i=(rand() % 100), i !=50)
printf("i is %d, trying again... \n");

这里,逗号运算符将两个表达式隔开,while语句的每次循环都将计算这两个表达式的值。逗号左边是第一个表达式,它把0至99之间的一个随机数赋给i;第二个表达式在while语句中更常见,它是一个条件表达式,用来判断i是否不等于50。while语句每一次循环都要赋予i一个新的随机数,并且检查其值是否不等于50。最后,i将被随机地赋值为50,而while语句也将结束循环。

搜索更多相关主题的帖子: 运算符 逗号 
2007-10-25 21:52
快速回复:逗号运算符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025051 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved