ZX-SPECTRUM Asked:2020-08-20 16:54:55 +0800 CST2020-08-20 16:54:55 +0800 CST 2020-08-20 16:54:55 +0800 CST C99 和变量声明 772 标准规定块中的变量是在输入时创建的。但是在 C99 中,如果变量可以在其中声明而不是在块的开头呢?进入区块时它们是否仍然创建? c 1 个回答 Voted Best Answer Harry 2020-08-20T19:34:02+08:002020-08-20T19:34:02+08:00 你看,它们何时被创建的问题完全是空闲的。 假设它们是在块的开头创建的。 或者,假设它们不是在块的开头创建的。 或者它们是用一个键创建的,但不是用另一个键创建的。 无论如何,在你到达一个变量的声明之前,你不能以任何方式访问它。很大程度上取决于优化器——他是决定将变量放在堆栈上还是放在寄存器中,是放在单独的内存区域中,还是放在被另一个变量占用但不再使用的区域中。 因此,要对这个问题给出一个确切的答案,在我看来,只有一个 - 取决于:) 我不确定(如果我错了 - 让专家纠正它),但标准应该给出这样的东西给编译器。
你看,它们何时被创建的问题完全是空闲的。
假设它们是在块的开头创建的。
或者,假设它们不是在块的开头创建的。
或者它们是用一个键创建的,但不是用另一个键创建的。
无论如何,在你到达一个变量的声明之前,你不能以任何方式访问它。很大程度上取决于优化器——他是决定将变量放在堆栈上还是放在寄存器中,是放在单独的内存区域中,还是放在被另一个变量占用但不再使用的区域中。
因此,要对这个问题给出一个确切的答案,在我看来,只有一个 - 取决于:) 我不确定(如果我错了 - 让专家纠正它),但标准应该给出这样的东西给编译器。