美文网首页
逗号表达式

逗号表达式

作者: 苦瓜1512 | 来源:发表于2018-06-19 14:17 被阅读0次

    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

    相关文章

      网友评论

          本文标题:逗号表达式

          本文链接:https://www.haomeiwen.com/subject/hdpaeftx.html