GNU C的赋值扩展

在标准C中:

表达式    指   运算符和操作数的组合

复合语句 指 把一个或多个语句用 { } 括起来组成的一个语句,称 复合语句。(在程序中应把复合语句看成是单条语句,而不是多条语句。复合语句内的各条语句都必须以分号 ; 结尾

举例:下面就是一个C 语言中的复合语句。

 { x=y+z; a=b+c; printf("%d%d",x,a); } 

 

在GNU C中 ,允许 小括号 括起来的 复合语句 出现在一个表达式中

举例:

int a = ({ int b = 1;
        int c =99;
        b + c;
        b + c - 10;
    });
    
int c = 10;

注意  GNU C 中a 的值是 复合语句中最后一个语句的值,并且它的数据类型与最后一个语句的数据类型相匹配。而且b和c只存在于大括号限定的代码域中, 外面依旧可以再次用int c

//  这种特性(Statements and Declarations in Expressions)在linux内核中常被用于宏的定义中。

转载于:https://my.oschina.net/u/2472425/blog/1083338

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值