您当前的位置:首页 > 计算机 > 编程开发 > C语言

在C语言中 除了for语句中之外,在哪些情况下还要使用逗号运算符

时间:12-30来源:作者:点击数:

逗号运算符通常用来分隔变量说明、函数参数、表达式以及for语句中的元素。

下例给出了使用逗号的多种方式:

#include <stdio.h>
#include <stdlib.h>
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语句也将结束循环。

请参见:
    1、运算符的优先级总能保证是“自左至右”或“自右至左”的顺序吗?
    2、++var和var++有什么区别?

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门