博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言之逗号表达式
阅读量:5312 次
发布时间:2019-06-14

本文共 1333 字,大约阅读时间需要 4 分钟。

 C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:

  3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的形式如下:

 

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

 

 
逗号表达式的要领:

 

(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。

 

(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。

 

(3) 逗号运算符的优先级别在所有运算符中最低。

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,知道最后。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
  a=3*5,a*4
对 此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对 呢?赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为 60。
  一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。
  逗号表达式的一般形式可以扩展为
    表达式1,表达式2,表达式3……表达式n
它的值为表达式n的值。
  逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:
  ① x=(a=3,6*3)
  ② x=a=3,6*a
  第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。
  其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.
  请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如
  printf("%d,%d,%d",a,b,c);
  上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为
  printf("%d,%d,%d",(a,b,c),b,c);
则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活,适应性强

转载于:https://www.cnblogs.com/canxuexiecheng/articles/3336290.html

你可能感兴趣的文章
看门狗 (监控芯片)
查看>>
css背景样式
查看>>
JavaScript介绍
查看>>
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>
Hallo wolrd!
查看>>
16下学期进度条2
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
Chapter 3 Phenomenon——12
查看>>
和小哥哥一起刷洛谷(1)
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>