Trong one of the answers trong Tips for golfing in C, tôi thấy mã này (phiên bản ungolfed): (? Nhưng những người quan tâm trong sân đang)Tôi phải làm gì nếu tôi khai báo một mảng không có kích thước trong phạm vi toàn cục?
s[],t;
main(c){
for(scanf("%*d "); ~(c=getchar()); s[t++]=c)
putchar(s[t]);
}
Tôi nghĩ rằng chương trình trên biểu UB. Nhưng điều tôi không hiểu là phạm vi toàn cầu là s[]
. Tôi biết rằng khi loại biến toàn cục không được chỉ định, biến mặc định là int
. Tôi tạo ra một chương trình nhỏ mà đáng ngạc nhiên biên dịch:
#include <stdio.h>
int s[];
int main(void)
{
printf("Hello!");
}
dù nó phát ra một cảnh báo:
prog.c:23:5: warning: array 's' assumed to have one element [enabled by default]
int s[];
^
s
trong chương trình trên là gì? Có phải là mộtint*
hoặc cái gì khác không?- Điều này có hữu ích ở bất kỳ đâu không?
's' là một mảng' int' với số phần tử được xác định thực hiện? – alk
@alk, Vì vậy, triển khai phân bổ một số kích thước cho 's'? –
Có lẽ là '0' hoặc' 1'? – alk