zoukankan      html  css  js  c++  java
  • C语言中逗号运算符和逗号表达式

    http://www.dotcpp.com/course/c/10403.html

    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
    View Code

    它的值为表达式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使用灵活,适应性强.



    #include <stdio.h>
    
    int main()
    {
       /* 我的第一个 C 程序 */
       int a=2,b=4,c=6,x,y;
    	y=(x=a+b),c+b;
    	printf("y=%d,x=%d",y,x);
       
       return 0;
    }
    

     1 #include <stdio.h>
     2 void main()
     3 {
     4     char a='B',b='O',c='k';
     5     putchar(a);putchar(b);putchar(b);putchar(c);putchar('	');
     6     putchar(a);putchar(b);
     7     putchar('
    ');
     8     putchar(b);putchar(c);
     9     
    10 }

     1 #include<stdio.h>
     2 #include<math.h>
     3 /*
     4 输入三角形的三边长, 求三角形的面积。
     5 已知三角形的三边长a,b,c,则该三角形的面积公司为
     6 area^2=s(s-a)(s-b)(s-c)
     7 
     8 其中: s=(a+b+c)/2 
     9 
    10 */
    11 
    12 void main(){
    13     float a,b,c,s,area;
    14     scanf("%f,%f,%f",&a,&b,&c);
    15     s=1.0/2*(a+b+c);
    16     area=sqrt(s*(s-a)*(s-b)*(s-c));
    17     printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f
    ",a,b,c,s);
    18     printf("area=%7.2f
    ",area);
    19 }

     

  • 相关阅读:
    【爬虫】-爬取食品检验结果
    《Python数据分析与挖掘实战》-第四章-数据预处理
    【算法学习】-线性回归算法
    【数据分析学习】Pandas学习记录
    【数据分析学习】Pandas思维导图
    【数据分析学习】016-numpy数据结构
    路飞学城Python-Day80
    java的安装环境配置详细步骤
    Java中的位运算符
    Java中对List集合的常用操作
  • 原文地址:https://www.cnblogs.com/Mengchangxin/p/9904502.html
Copyright © 2011-2022 走看看