In one of the answers in Tips for golfing in C, habe ich diesen Code (ungolfed Version): (aber wer in Code Golf kümmert)Was bekomme ich, wenn ich ein Array ohne globale Größe deklariere?
s[],t;
main(c){
for(scanf("%*d "); ~(c=getchar()); s[t++]=c)
putchar(s[t]);
}
Ich denke, dass das obige Programm UB aufweist. Aber die Sache, die ich nicht verstehe, ist die s[]
im globalen Umfang. Ich weiß, dass, wenn der Typ einer globalen Variablen nicht angegeben ist, der Standardwert int
ist. Ich habe ein kleines Programm, das überraschend kompiliert:
#include <stdio.h>
int s[];
int main(void)
{
printf("Hello!");
}
obwohl es eine Warnung aussendet:
prog.c:23:5: warning: array 's' assumed to have one element [enabled by default]
int s[];
^
- Was
s
in dem obigen Programm ist? Ist es einint*
oder etwas anderes? - Wird dies überall nützlich sein?
's' ist ein Array von' int' mit einer Implementierung definierten Anzahl von Elementen? – alk
@alk, also weist eine Implementierung etwas Größe für 's' zu? –
Wahrscheinlich "0" oder "1"? – alk