马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
void main()
{
int a = 1, b = 5, c = 8;
int y = (a+b), (b+c);
printf("%d\n", y);
}
可当我把上面的代码改成下面的就可以,为啥下面的行,它们有什么区别吗?
#include<stdio.h>
void main()
{
int a = 1, b = 5, c = 8, y;
y = (a+b), (b+c);
printf("%d\n", y);
}
还有就是逗号运算符是以表达式2的值当做整个表达式的值,可为啥我这题却是以表达式1的值当整个表达式的值呢?
本帖最后由 一点点儿 于 2022-8-9 18:35 编辑
优先级:赋值运算符>逗号运算符
下面的代码和上面代码的区别是先声明y再运算
y = (a+b), (b+c)
因为优先级:赋值运算符>逗号运算符
会先运行 y = (a+b)
y就为6了
y = (a+b), (b+c) 相当于 (y = (a+b)), (b+c)
逗号表达式的值还是表达式2的值,只不过逗号表达式的值没有赋给y,y的值不是逗号表达式的值。实际上这里逗号表达式的值没有赋给任何一个变量,我们看不到是多少
如果用z得到逗号表达式的值,再打印y和z,如下面代码所示
#include <stdio.h>
int main() {
int a = 1, b = 5, c = 8, y, z;
z = ( y = (a + b), (b + c));
printf("%d %d\n", y, z);
}
运行结果为: 6 13
可以发现逗号表达式的值还是表达式2的值
|