一次为多个变量赋值的方法

1、批量赋值

在对C语言赋值时,可以使用下面这种简化的形式对多个变量赋初值。

int a, b, c;
a=b=c=1;

有些书中将这种赋值方式说成是“连等式”,这种说法是不严谨的。

连等式是一个数学概念,指含有两个或两个以上的等号的等式。从形式上a=b=c=1是符合这个定义的,但却忽略了一个问题:C语言中的等号是“赋值运算符”,表示将右侧的值赋给左侧的变量,而并不表示等号左右两边相等,它与数学中的等号意义是完全不同的。

也就是说,在C语言里,上述式子连等式都算不上,连等式就更无从谈起。

有的书上称之为“串联赋值”,意思是把多个等号串联起来赋值,这种叫法更合理些。

此外,要注意一点:在定义变量时不能用这种方式,如下面的代码编译时会报错:

int a=b=c=1; //编译出错

2、批量改值

在已赋初值的前提下,还可以用组合运算符一次改变多个变量的值。

int a=1, b=1, c=1;
a+=b-=c*= 1;

3、运算次序

批量赋值是从右向左依次计算的。这其实很好理解,因为赋值就将等号右侧的值赋给左边的变量,就像从右向左传球一样,所以如果有一堆串联的等号,值的源头一定是在最右边,故而也自然从最右边算起。

前面提到的a+=b-=c*= 1;按从右向左可以解析为以下代码:

c*= 1; //c=c*1=1*1=1
b-=c; //b=b-c=1-1=0
a+=b; //a = a+b=1+0=1

有兴趣的可以尝试一下以下完整代码:

#include<stdio.h>
int main(){
    int a=0,b=0,c=0; //不能用a=b=c= 0的形式,否则报错
    a=b=c=1;//这是可以通过编译的,a,b,c的值都赋值为1
    printf("%d %d %d\n", a, b, c);
    a+=b-=c*= 1; //也可以用组合的运算符
    printf("%d %d %d\n", a, b, c);
    return 0;
}

最后,需要强调的一点是,这种赋值方式看以高效便捷,但对看代码的人并不友好,在有组合运算符时,有时会很难理解,比如下面的代码:

a+=a-= a*a;
a^=b^=a^=b;

所以,作为编程人员,知道怎么求解此类题目即可,在编写代码时不推荐用这种赋值方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

金创想

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

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

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

打赏作者

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

抵扣说明:

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

余额充值