其实你根本没有明白逗号运算符 跟 自加的规则
逗号运算符的运算规则是
多个表达式用逗号分开其中用逗号分开的表达式的值分别结算但整个表达式的值是最后一个表达式的值
a=1,b=2 ,c=3; 这个是逗号表达式
d=(a++,b,c) ; 这个才是逗号运算符
你写的里面 y=1,y+g,y++; 根本不是逗号运算符 只是逗号表达式
跟分开 3次写结果没什么不同
自加 自减 是要在 表达式中才能够体现的
单独拿出来 是没有先后的
y++ 和 ++y单独使用是没有什么区别的
当时放到表达式里面才有不同
int a=5;
a++;
printf("%d",a);
输出的结果是6
int a=5;
++a;
printf("%d",a);
输出的结果还是6
int a=5,b;
b=++a;
printf("%d",b);
输出的结果是b=6 a=66
int a=5,b;
b=a++;
printf("%d",b);
输出的结果是b=5 a=6
其实自加问题可以简单理解成
b=a++; 其实 就是
b=a;
a=a+1
b=++a; 其实 就是
a=a+1
b=a;
当 a++ 和 ++a
不参加别的运算 本身只是 a=a+1而已
还有 就是 y++ ++y 单独拿出来 都是 y=y+1 结果并没什么不同
把你的表达式中的 换成++y 结果一样是y=2.000000
在表达式中才有不同
比如y=1
y=1,y+5,y++;
首先y=1,y就等于1了
y+5,y值没变化,y还等于1
y++,y自加,y等于2
,的运算顺序在=之后
所以你y=1,y+5,y++;语句是不是和你的意思不一致
y当然是2了。逗号表达式从左到右依次计算
y=1; // y=1
y+5 //和y的值没关系
y++; //y=2
如果是这样s=( y=1,y+5,y++ )
那s的值确实是1