c语言循环语句中花括号的作用,c语言中用括号将花括号括起来给变量赋值 |
您所在的位置:网站首页 › 2022哈尔滨工业大学科研成果 › c语言循环语句中花括号的作用,c语言中用括号将花括号括起来给变量赋值 |
c 语⾔循环语句中花括号的作⽤ ,c 语⾔中⽤括号将花括号括起 来给变量赋值 #define max(x,y) ({ \ typeof(x) _x = (x);\ typeof(y) _y = (y);\ (void) (&_x == &_y);\ _x > _y ? _x : _y; }) 在这个宏中,花括号⾥表达式的值为最后⼀条语句的值,然后⽤⼩括号将⼤括号括起来就可以给其他变量赋值了。当红语句中的最外层⼩括 号不⽤的话,也就是如果这个宏语句改为如下时: #define max(x,y) { \ typeof(x) _x = (x);\ typeof(y) _y = (y);\ (void) (&_x == &_y);\ _x > _y ? _x : _y; } 就会出现错误。具体为什么会出现这样的情况本⼈也不是很清楚。但在⽹上看到⼀个这样的介绍: gcc的扩展⽤法,标准C++不⽀持。 它相当于是扩展了primary-expression primary-expression: identifier constant string-literal ( expression ) GNU extensions: primary-expression: __func__ (treated as a keyword in GNU C) __FUNCTION__ __PRETTY_FUNCTION__ ( compound-statement ) // compound-statement 就是花括号语句 __builtin_va_arg ( assignment-expression , type-name ) __builtin_offsetof ( type-name , offsetof-member-designator ) __builtin_choose_expr ( assignment-expression , assignment-expression , |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |