逗号运算符和赋值运算符

逗号运算符,优先级别在C语言中处于最低的位置,它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。

首先看逗号表达式(a=3*5,a*4),a+15

这个表达式也是很常见,在网上也可以找到解析,首先是执行a=3*5,然后表达式就变成了(15,a*4),a+15,然后是执行a*4,a*4的结果是60,表达式就变成了(15,60),a+15,此时a的值是没有发生改变的,所以执行a+15之后,最终表达式就是(15,60),30,对于逗号表达式的值取最右边的结果,所以整个逗号表达式的取值就是30.

下面我们来对比这两条语句:

1.b=(a=3*5,a*4),a+15;

2.b=((a=3*5,a*4),a+15);

#include<stdio.h>
int main(){
	int a,b;
	b=(a=3*5,a*4),a+15;
	printf("a=%d,b=%d\n",a,b);
	return 0;
}

运行结果:a=15,b=60

#include<stdio.h>
int main(){
	int a,b;
	b=((a=3*5,a*4),a+15);
	printf("a=%d,b=%d\n",a,b);
	return 0;
}

运行结果:a=15,b=30

对比两个代码的运行结果,首先第二个程序和我们之前所解释的一样,然后我们再看第一个程序的b=(a=3*5,a*4),a+15,所执行就应该是b=(15,60),30,然后先执行赋值语句,结果就是60,30,最终b的输出是60

然后我们再来看下面个程序:

#include<stdio.h>
int main(){
	int a=1,b=2,c;
	c=a,b=3;
	printf("a=%d,b=%d,c=%d\n",a,b,c);
	return 0;
}

运行结果:a=1,b=3,c=1

这个输出当然是显然易见的,那这个就到这结束了,然后我之所以写这篇文章,主要还是想记录一下,因为当时我忘记逗号运算符的优先级低于赋值运算符,然后当时代码变量也比这个复杂,一时间没看出来,大概就是以为执行是先c=a,3,然后把3的值给c,然后运行结果应该是a=1,b=3,c=3,我当时验证的方法是把c=a,b=3加上一个括号变成c=(a,b=3)发现两者的运行结果不一样,反而和c=a;b=3的结果是一样的,我就感觉和疑惑,还写了一下a=1,1+2;发现程序报错,然后加上括号变成a=(1,1+2)发现程序又可以运行,然后再网上貌似没有找到解析,可能也是太简单了,不过当时因为变量有点复杂一时间没有看出来,这写一下思路,把变量换简单一点,貌似确实是这么回事。

这是本人第一次写博客,主要还是想记录一下自己的思路什么的,当然确实写的不怎么好,不过也希望可以帮助的大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

封奚泽优

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值