int x = ({int y = 90; 109});

iEverX 2012-07-18 08:36:27


int x = ({ int y = 90; 109; });

int x = (int y = 90; 109;);

int x = {int y = 90; 109}


只有第一个可以通过编译。。
想知道在C语言中,这里的小括号,大括号都是什么意义?
...全文
189 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iEverX 2012-07-18
  • 打赏
  • 举报
回复
木偶兄 2012-07-18
  • 打赏
  • 举报
回复
第一个因为{}里面的内容被()括起来了,所以被认为是以{}这个复合语句的值来赋值给X,{}复合语句的值为最后一条单语句的值,所以最后X = 109;
2、3两个都不对,位于变量=右边,却不符合右值的语法!
iEverX 2012-07-18
  • 打赏
  • 举报
回复
我的是gcc4.6.3,第一个是可以通过的长。。
另外,这种写法是把Linux内核中的一个宏定义展开后,按照其形式写的。。
booirror 2012-07-18
  • 打赏
  • 举报
回复
{}括起来表示一个block,在这里定义变量具有block作用域
()主要用来保证计算的优先级,
微型蚂蚁 2012-07-18
  • 打赏
  • 举报
回复
我觉得有两者的意义是
{}通常代表域,内部定义的变量在{}内部具有局部性。
()用于确定计算的优先级,或指明这是一个函数
当然不一定正确或者说的完整
微型蚂蚁 2012-07-18
  • 打赏
  • 举报
回复
gcc 4.4.1
三个全是错的。
taodm 2012-07-18
  • 打赏
  • 举报
回复
多换几个编译器

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧