相关疑难解决方法(0)

使用goto跳过变量声明?

我正在阅读C编程 - KNKing 的现代方法来学习C编程语言,并注意到goto语句不能跳过变长数组声明.

但现在的问题是:为什么goto跳转允许跳过​​固定长度的数组声明和普通声明?更准确地说,根据C99标准,这些例子的行为是什么?当我测试这些案例时,似乎声明实际上没有被跳过,但这是正确的吗?声明可能已跳过的变量是否可以安全使用?

1.

goto later;
int a = 4;
later:
printf("%d", a);
Run Code Online (Sandbox Code Playgroud)

2.

goto later;
int a;
later:
a = 4;
printf("%d", a);
Run Code Online (Sandbox Code Playgroud)

3.

goto later;
int a[4];
a[0] = 1;
later:
a[1] = 2;
for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
  printf("%d\n", a[i]);
Run Code Online (Sandbox Code Playgroud)

c arrays goto variable-declaration

6
推荐指数
2
解决办法
2172
查看次数

标签 统计

arrays ×1

c ×1

goto ×1

variable-declaration ×1