|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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的值
|
|