返回信息流int i;
scanf("%d",&i);
int buf[i];
这是一条镜像帖。来源:北邮人论坛 / cpp / #94997同步于 2017/4/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【已解决】这是未定义行为吗?
shinian
2017/4/4镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
支持c99 vla的编译器应该能过 这段代码主要是没考虑i是负数的情况
【 在 Ncer (战战兢兢,如临深渊,如履薄冰) 的大作中提到: 】
: 这编译能过吗
数组的大小必须是已知,不然你编译器不会让你通过编译的,如果你想做一个动态数组,可以这样:
int *buf = malloc(sizeof(int)*i);
free(buf);
我用gcc 4.8.4编译通过了,而且没有任何警告,也可以正确运行。在当助教的时候看到有人这么写,愣了一下,想起自己刚学编程那会儿也这么写过。一直觉得这应该是未定义的行为,但是一直没有确认。
【 在 nvyoujiaren 的大作中提到: 】
: 数组的大小必须是已知,不然你编译器不会让你通过编译的,如果你想做一个动态数组,可以这样:
: int *buf = malloc(sizeof(int)*i);
: free(buf);
你试试vs,看看它说什么??
【 在 shinian 的大作中提到: 】
: 我用gcc 4.8.4编译通过了,而且没有任何警告,也可以正确运行。在当助教的时候看到有人这么写,愣了一下,想起自己刚学编程那会儿也这么写过。一直觉得这应该是未定义的行为,但是一直没有确认。