1163028233 发表于 2020-12-21 23:32:53

求问逗号运算问题

#include<stdio.h>
int main()
{
    int a = 2, b = 3, c = 10;

    printf("%d", a=a-b,b=a-b,c=a-b);
   
    return 0;
}

计算结果是3
这个结果怎么得来的?
我觉得应该是-1才对啊

北冰羊 发表于 2020-12-22 11:56:23

逗号运算取最后一次,printf是自右向左运算,但这个无论左往右还是右往左都是3

z5560636 发表于 2020-12-22 14:13:15


#include<stdio.h>
int main()
{
    int a = 2, b = 3, c = 10;
    a=a-b
    b=a-b
    c=a-b;
    printf("%d", c);
   
    return 0;
}
分解成这样就容易明白了。

风过无痕1989 发表于 2020-12-22 16:16:35

控制符只有一个,变量有三个,若如2楼的朋友所说(printf是自右向左运算,我没有去研究过),那 printf()就应该选择了最后赋值的 c = a-b 的 b 值,事实上,若将 b 赋值几,( int a = 2, b = 4, c = 10; 输出 4)输出就是几。这是在没有常量的情况下,若是有常量,比如:a = a - 1, b = a - b, c = a - b,输出 1

风过无痕1989 发表于 2020-12-22 16:17:47

z5560636 发表于 2020-12-22 14:13
分解成这样就容易明白了。

你分拆后,6行、7行没有分号,编译就出错了,程序运行不了

z5560636 发表于 2020-12-23 09:29:00

风过无痕1989 发表于 2020-12-22 16:17
你分拆后,6行、7行没有分号,编译就出错了,程序运行不了

python写习惯了,不好意思。{:5_107:}
页: [1]
查看完整版本: 求问逗号运算问题