#include <stdio.h>
int numero=6;
int numerodos=4;
int result=numero*numerodos;
main()
{
while (result<200) {
printf("The product of %d and %d is %d", numero, numerodos, result);
result=result+1
}
}
我知道算法很糟糕,但我不专注于此。但是在第 3 行,我在代码块中收到"初始值设定项元素不是常量"错误。我想知道这是为什么?我不是在处理大型对象,这就是其他堆栈流所说的错误所涉及的内容。如果我在 printf 之后初始化主函数中的第 3 行;但是,它构建并运行良好的代码,尽管代码很糟糕。
这是因为您在main((之外初始化并给出了另一个变量的值
试试这个:
#include <stdio.h>
int numero=6;
int numerodos=4;
int result=0;
main()
{
result=numero*numerodos;
while (result<200) {
printf("The product of %d and %d is %d", numero, numerodos, result);
result=result+1; // BE CAREFUL, ADD THIS SEMICOLON
}
}
根据C标准(6.7.9初始化(
4 具有静态对象的初始值设定项中的所有表达式 或线程存储持续时间应为常量表达式或字符串 文字。
和(6.6 常量表达式(
考虑到没有必要将2 常量表达式可以在翻译过程中计算,而不是 比运行时,并因此可以在任何常量的地方使用 可能
程序中的变量声明为全局变量。你可以写
#include <stdio.h>
int main( void )
{
int numero=6;
int numerodos=4;
int result=numero*numerodos;
while (result<200) {
printf("The product of %d and %d is %d", numero, numerodos, result);
result=result+1
}
}
在这里,您正在尝试动态初始化变量,但在 C 中是不可能的。在 C 中,变量只能在初始化时分配一个常量值(任何 no,string(。它可以在 c++ 或 java 中完成。