注册 登录
编程论坛 C语言论坛

求助大佬(其实这个不是大佬都行!!太萌新的问题了

喜风 发布于 2022-10-02 22:31, 1688 次点击
我想用C语言算逗号表达式,就是这个(a=2,b=5,a+b++,a+b)的结果,然后自信地敲了一串代码
#include<stdio.h>
int main()
{
int a,b,c;
a=2;
b=5;
c=(a=2,b=5,a+b++,a+b);
printf("%d\n",c);
return 0;
}

当然这一串狗屁不通的代码是没有什么好结果的,结果就是没有结果,都运行不了。。。。
9 回复
#2
吹水佬2022-10-03 07:53
只有本站会员才能查看附件,请 登录
#3
snowman6662022-10-03 19:46
我也想问一下,第三个表达式a+b++还是等于7,但这时b变成6了,所以才在第四个表达式a+b输出8。我想问一下是这样吗
#4
rjsp2022-10-03 20:50
回复 3楼 snowman666
对,评估值 与 副作用 是两个概念。
比如 int a = 0;
那么 a++ 这个表达式的评估值是 0,副作用是 a 的值变为了1。
#5
喜风2022-10-03 21:04
回复 2楼 吹水佬
为什么我的运行不出来
#6
喜风2022-10-03 21:05
回复 2楼 吹水佬
不过还是非常感谢您的帮助!!!
#7
喜风2022-10-03 21:07
回复 4楼 rjsp
谢谢您!!!
#8
rjsp2022-10-04 09:10
回复 7楼 喜风
主要是大家理解不了你说的“都运行不了”是什么意思。
如果编译失败,那你应该贴出编译器给出的错误信息;
如果运行报错,那你应该贴出报错信息;
如果运行后控制台界面一闪而过,那也应该说“运行成功,但……”。

你的行为就像跟医生说“我有病”,但死活不肯说是头痛还是脚疼,却让医生开药一样
#9
不会游泳的虾2022-10-04 10:27
既然是逗号表达式,c=(a=2,b=5,a+b++,a+b);把表达式的每句都执行一遍呗,返回最后表达式的值,这也没什么错误,合规合法。
#10
ioriliao2022-10-10 14:15
等价于
a=2;
b=5;
a+b++;
c=a+b;
1