gpt4 book ai didi

c - 初始化程序元素不是常量 - 在循环内使用静态变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:27 24 4
gpt4 key购买 nike

我正在尝试混合声明的示例。为什么这个 static int x = j + i 给出错误“initialiser element is not a constant”?

静态变量是否总是必须用常量声明而不用变量赋值?

#include<stdio.h>
int main(){
int i = 1;
int j;
for(j = 2 * i ; j < 20; j++){
static int x = j + i;
printf("\n x = %d \n",x);
x += 2;
printf("\n i = %d \n",i);
printf("\n &x = 0x%x \n",(unsigned int)&x);
}
return 0;
}

最佳答案

标量变量可以在定义时初始化,方法是在名称后跟一个等号和一个表达式: 整数 x = 1; char squota = '\''; 长日 = 1000L * 60L * 60L * 24L;/* 毫秒/天 */

对于外部变量和静态变量,初始化器必须是常量表达式初始化完成一次,概念上是在程序开始执行之前。对于自动变量和寄存器变量,初始化器不限于常量:它可以是任何涉及先前定义值的表达式,甚至是函数调用。

自动变量是局部函数变量。
来自 K&R 第 4 章。

常量表达式在编译时计算,而不是运行时,并且可以在任何可以使用常量的地方使用。常量表达式的计算结果必须为该类型可表示值范围内的常量。

关于c - 初始化程序元素不是常量 - 在循环内使用静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com