逗号表达式

1. 逗号表达式的一般形式

表达式1, 表达式2, ..., 表达式n

PS:

  1. 逗号运算符优先级最低
  2. 逗号运算符的结合性从左至右
  3. 逗号表达式的值等于最后一个表达式的值
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int a, b, c;
    a = (b=9,c=33);                                                                                                     
    printf("a=%d\n", a); 
    return 0;
}
=============================
a=33

real    0m0.010s
user    0m0.000s
sys 0m0.000s

请按 ENTER 或其它命令继续

若有以下程序段:
int a = 0, b = 0, c = 0
c = (a -= a-5), (a = b, b+3);
printf("%d, %d, %d\n", a, b, c);
执行后输出的结果是( )
A. 3,0,-10
B. 0,0,5
C. -10,3,-10
D. 3,0,3

答案:B 逗号运算符的优先级比赋值运算符的优先级低

  1. 第二条语句由逗号运算符连接两个表达式组成,第一个表达式为c=(a-=a-5),第二个表达式为(a=b,b+3)
  2. 逗号运算符的结合顺序为从左到右,先计算左边的表达式c=(a-=a-5)
  3. 左边表达式是一个赋值表达式,把表达式(a-=a-5)的值赋给变量c,需要先计算表达式(a-=a-5)的值
  4. 表达式(a-=a-5)-=的优先级比-低,先计算-=右边表达式的值,为0-5=-5,由此a-=a-5把变量a的值改变为5,表达式(a-=a-5)的值也为5
  5. 所以变量c的值为5
  6. 第二个表达式(a=b,b+3)由也是一个逗号表达式,左侧的赋值表达式把变量b的值赋给变量a,所以a = 0, b = 0,第二个表达式虽然有运算,但是运算结果没有保存,所以对三个变量的值没有影响
  7. 所以,变量a, b, c的值分别为0, 0, 5
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,698评论 0 13
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,771评论 0 2
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 9,807评论 1 44
  • 一、 这是一个推广性质的直播 开始结尾中间分别穿播推广广告 因为是三八女神节,两个二维码:一个直接购买的链接,一个...
    我的昵称已被使用阅读 1,566评论 0 1
  • 爱情 菩提天天长 2018-02-28 12:24 · 字数 2584 · 阅读 0 · 日记本 图片发自简书Ap...
    菩提天天长阅读 2,372评论 0 1