C语言逗号表达式的问题?

学习 时间:2026-04-04 20:13:16 阅读:5833
C语言逗号表达式的问题?#include "stdio.h" main(){ int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf("y=%d,x=%d",y,x); getch(); }这个,Y应该被赋值为表达式2的值吧,结果应该是10.但我用WIN-TC运行的结果为6,不知道为什么?

最佳回答

可靠的星星

霸气的鸡

2026-04-04 20:13:16

如果是((x=a+b),(b+c))实际上可以看成(6,10)整个逗号表达式的值应该是10
但这是错的,这儿还有赋值运算符。赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中 y=(x=a+b),(b+c);应该等价于这样的结合:y=x,10;如果这样写的话,则答案很清晰,为:6
提示:据我统计,这种类型的题目错误率超过70%。
有疑问请HI我:)

最新回答共有2条回答

  • 拉长的棒棒糖
    回复
    2026-04-04 20:13:16

    如果是((x=a+b),(b+c))实际上可以看成(6,10)整个逗号表达式的值应该是10但这是错的,这儿还有赋值运算符。赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中 y=(x=a+b),(b+c);应该等价于这样的结合:y=x,10;如果这样写的话,则答案很清晰,为:6提示:据我统计,这种类型的题目错误率超过70%。有疑问请HI我:)

上一篇 年最后的成语计最后的成语 于在第一个的成语

下一篇 什么牌子椅子好