`
xlover
  • 浏览: 244402 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于c中逗号运算符的学习

    博客分类:
  • C
 
阅读更多

说实话,之前一直不知道“,”这个运算符的正真含义,或者说根本就忽视了~~~

今天碰到个问题,算是将这个问题搞明白了,现将这个经验大家分享下

  1. int a=(5,2); 
  2. printf("%d",a); 

这段代码,输出为2,为什么呢?


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

  3+5,6+8

称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为

         表达式1,表达式2

逗号表达式的求解过程是:先求解表达式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使用灵活,适应性强 

 

分享到:
评论

相关推荐

    7.6 逗号运算符 Project1.7z

    标题中的“7.6 逗号运算符”指的是在C语言中的一种特殊运算符——逗号运算符。在C语言中,逗号运算符(`,`)被用于将多个表达式连接在一起,使得它们可以依次执行。每一个表达式都会被执行,而整个表达式的值则是...

    程序设计-家里的老小——逗号运算符.pptx

    在程序设计领域,逗号运算符(Comma Operator)是一个重要的概念,尤其在C语言及其衍生的编程语言中被广泛使用。本讲座将深入讲解这个运算符的特点、用途以及如何在实际编程中合理运用。 首先,我们要理解逗号...

    c语言运算符与表达式PPT学习教案.pptx

    C语言中的运算符可以分为八类:算术运算符、赋值运算符、逗号运算符、关系运算符、逻辑运算符、位运算符、条件运算符和其它运算符。每种运算符都有其特定的功能和优先级,例如算术运算符的优先级高于关系运算符。 ...

    C语言中,有哪些算术运算符

    逗号运算符 `()` 可以在一个表达式中串联多个表达式,例如 `(a, b, c)` 表示依次计算 `a`、`b` 和 `c`,最后返回 `c` 的值。 ### 八、指针运算符 指针运算符包括: - **间接访问运算符 (*)**:用于获取指针所指向...

    C语言运算符优先级

    C语言中的运算符可以分为单目运算符、双目运算符、三目运算符和逗号运算符,它们各有优先级顺序和结合方向。 首先,单目运算符包括负号运算符(-)、逻辑非运算符(!)、取地址运算符(&)、自增运算符(++)、自减...

    C语言 数据类型 赋值 运算符 算法.pdf

    C语言中有多种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符和逗号运算符等。这些运算符可以组合成复杂的表达式。表达式的求值是按照运算符的优先级和结合性所规定的顺序进行...

    C语言运算符及表达式PPT学习教案.pptx

    本PPT学习教案主要讲解C语言中的运算符及表达式,涵盖了算术运算符、关系运算符、逻辑运算符、赋值运算符、自增自减运算符、复合运算符、逗号运算符、位运算符等内容。 算术运算符 算术运算符包括加运算符`+`、减...

    对C语言中运算符的再认识.pdf

    标题《对C语言中运算符的再认识》和描述《对C语言中运算符的再认识》的相同,均指出了文章主题。从给定的文件信息中可以提取出如下知识点: C语言是高级编程语言的一种,其中运算符是构成表达式的重要元素。运算符...

    C语言运算符和表达式PPT学习教案.pptx

    本文将对C语言的运算符和表达式进行详细的介绍,包括运算符的概念、分类、优先级和结合性、算术运算符、自增和自减运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、逗号运算符和条件运算符等。 一、引例 ...

    C语言 第3章 运算符与表达式

    按照功能则可细分为算术运算符、关系运算符、逻辑运算符、赋值运算符、位操作运算符、条件运算符、逗号运算符、指针运算符和求字节数运算符等。 - **算术运算符**:用于执行基本的数学运算,如加、减、乘、除、求余...

    C++中赋值运算符与逗号运算符的用法详解

    在C++编程语言中,赋值运算符与逗号运算符是编程中常见的两种运算符,它们在程序设计中起到至关重要的作用。 首先,我们来详细讲解赋值运算符。赋值运算符“=”用于将一个值赋予一个变量。例如,`a = 3` 这个语句将...

    C语言运算符优先级PPT学习教案.pptx

    C语言提供了多种类型的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、强制类型转换运算符以及分量和下标运算符等。 1. 算术运算符:如加(+)、减...

    C语言运算符PPT学习教案.pptx

    逗号运算符`,`用于串联两个表达式,先计算左边的表达式,然后返回右边表达式的值作为整个表达式的值。例如,`a = 3 * 5, a * 4`中,先计算`a = 3 * 5`,然后计算`a * 4`,整个表达式的结果是`a * 4`的值。 这些...

    C语言中逻辑运算符与条件运算符的学习教程

    在C语言中,逻辑运算符和条件运算符是编程中非常关键的概念,它们在控制程序流程和进行条件判断时起到重要作用。以下是对这些知识点的详细解释: **逻辑运算符** 逻辑运算符包括`!`(逻辑非)、`&&`(逻辑与)和`|...

    C语言运算符优先级.docx

    ### C语言运算符优先级详解 #### 概述 在C语言编程中,理解运算符的优先级至关重要,因为这直接影响着程序的执行结果。...通过本文的学习,你应该能够更加熟练地处理C语言中的各种运算符及其优先级问题。

    对C语言教学中学生易出错的运算符及表达式的解析.pdf

    在C语言教学中,学生在掌握运算符及表达式时往往会遇到一些难题,导致出错率较高。本文将针对学生在TurboC环境下易出错的运算符及表达式问题进行详细解析,希望能够帮助初学者在编程时减少错误,提高编程效率。 ...

    C语言运算符优先级列表

    7. **逗号运算符**:`,`是C语言中优先级最低的运算符,它允许在一条语句中执行多个操作,每个表达式从左到右依次计算,最后返回最右边表达式的结果。 理解了运算符优先级,可以帮助我们正确编写和解析复杂的表达式...

    学习Linux笔记资料

    * 基本逗号运算符:基本逗号运算符是Linux系统中的一个基本逗号运算符,了解基本逗号运算符是学习Linux的基础。 * 复合逗号运算符:复合逗号运算符是Linux系统中的一个基本逗号运算符,了解复合逗号运算符是学习...

    C 语言运算符优先级等级口诀.docx

    根据提供的文件标题“C 语言运算符优先级等级口诀.docx”,我们可以推断出这份文档的主要内容是关于C语言中的运算符优先级及其记忆方法。下面将详细展开这一主题,帮助读者更好地理解和掌握C语言中的运算符优先级...

    C语言初学者入门讲座 第四讲 运算符和表达式

    逗号运算符用于将多个表达式分隔开,并按顺序依次计算它们,但只返回最后一个表达式的值。 C语言中还有一些特殊的运算符,例如用于取得变量地址的“&”,取得内容的“*”,以及用于计算数据类型占用字节数的...

Global site tag (gtag.js) - Google Analytics