加了小括号,符合语句就变表达式了?

yutaooo 2009-01-21 11:43:39
下面代码什么情况?熟悉C语法的帮忙解释一下。




/* file: e1.c
* gcc -Wall -std=c89 -o e1 e1.c
* gcc -Wall -std=c99 -o e1 e1.c
*
*/
#include <stdio.h>

static void my_test(int x);

int main() {
printf(" %2x\n", ({int x; x = 3; x;}));

my_test(({int x; x = 3; x;}));

return 0;
}

void my_test(int x) {
printf("my_test: %d\n", x);
}

...全文
65 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yutaooo 2009-01-22
  • 打赏
  • 举报
回复


[XXXX-laptop: asm]$ gcc -std=c99 -pedantic -o e1 e1.c
e1.c: In function ‘main’:
e1.c:12: warning: ISO C forbids braced-groups within expressions
e1.c:14: warning: ISO C forbids braced-groups within expressions

yutaooo 2009-01-22
  • 打赏
  • 举报
回复

看来是gcc扩展。吓我一跳。 XD
xiaoyisnail 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 waizqfor 的回复:]
printf(" %2x\n", ({int x; x = 3; x;}));
MS 格式输出不能 再定义变量 像这样 原来也没看过 在VC6下是不行

[/Quote]

这是gcc的扩展
waizqfor 2009-01-22
  • 打赏
  • 举报
回复
printf(" %2x\n", ({int x; x = 3; x;}));
MS 格式输出不能 再定义变量 像这样 原来也没看过 在VC6下是不行

69,377

社区成员

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

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