Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c &引用;初始值设定项元素不是编译时常量;在Xcode中指定基本数学运算结果时_Objective C_C_Initialization - Fatal编程技术网

Objective c &引用;初始值设定项元素不是编译时常量;在Xcode中指定基本数学运算结果时

Objective c &引用;初始值设定项元素不是编译时常量;在Xcode中指定基本数学运算结果时,objective-c,c,initialization,Objective C,C,Initialization,我输入了这个,但是我得到了一个错误,Xcode不能识别*并且说 “初始值设定项元素不是编译时常量” 发生了什么事? (顺便说一句,我是一个完全的初学者。)在声明z时不能指定表达式。 试试这个 问题是您正在文件范围内声明这些。全局变量必须在编译时初始化,而不是在运行时,并且不允许使用其他变量初始化它们 如果在函数中声明这些,就不会有问题。但是如果你只是使用常量,你可以直接用35.0初始化z。你知道为什么会这样吗?这似乎是一个奇怪的语言特性。@Jake223:这是一个古老的C语言。过去,在做任何事情

我输入了这个,但是我得到了一个错误,Xcode不能识别*并且说 “初始值设定项元素不是编译时常量” 发生了什么事?
(顺便说一句,我是一个完全的初学者。)

在声明z时不能指定表达式。 试试这个


问题是您正在文件范围内声明这些。全局变量必须在编译时初始化,而不是在运行时,并且不允许使用其他变量初始化它们


如果在函数中声明这些,就不会有问题。但是如果你只是使用常量,你可以直接用35.0初始化
z

你知道为什么会这样吗?这似乎是一个奇怪的语言特性。@Jake223:这是一个古老的C语言。过去,在做任何事情之前,必须在块的顶部声明变量。数学也算得上什么。我想C99会让人放松很多,但是呃。也许Objective-C仍然使用C89规则。@darkstar8500:两者都没有。答案的要点是,你先声明变量,然后在它们全部声明后再进行计算。“仍然不工作”——这不是编译器错误消息。准确点。这些声明是在函数中还是在文件范围内?如果是后者,你当然不能这样做。@cHao-这不算是混合代码和声明,因为变量都在定义中——初始化中的表达式在C89和Objective C中完全可以,只要变量不是全局/静态的。“Xcode不识别*”——给你这样的印象是什么?这不是错误消息所说的。“初始值设定项元素不是编译时常量”——这是真的,不是吗
x
y
是变量,非编译时常量,因此
x*y
也不是编译时常量。这似乎更可能是问题所在。
int x = 10;
float y= 3.5;
float z =x*y;
int x = 10;
float y= 3.5;
float z;
z=x*y;