今天我发现了一件事。我不知道在goto标签后不能声明变量。
编译以下代码
#include <stdio.h>
int main() {
int x = 5;
goto JUMP;
printf("x is : %d\n",x);
JUMP:
int a = 0; <=== giving me all sorts of error..
printf("%d",a);
}
给出类似的错误
temp.c: In function ‘main’:
temp.c:7: error: expected expression before ‘int’
temp.c:8: error: ‘a’ undeclared (first use in this function)
temp.c:8: error: (Each undeclared identifier is reported only once
temp.c:8: error: for each function it appears in.)
现在背后的逻辑是什么?我听说不能在switch的case语句内创建变量。由于JUMP处于goto语句的同一作用域内(在我的情况下为主要功能的作用域),因此我认为作用域在这里不是问题。但是,为什么我会收到此错误?
JUMP: { int a = 0; printf("%d", a); }
;您是否认为这样的语句被编译成一个操作?