问题描述
为什么没有这个C程序编译?有什么不对呢?
我已经尝试过在 wxDevC ++
和Turbo C ++ 3.0。
MAIN.C
#包括LT&;&stdio.h中GT;
#包括LT&;&CONIO.H GT;const int的SIZE = 5;INT主(INT ARGC,字符** argv的)
{
字符数组[SIZE] = {'A','B','C','D','E'}; 的printf(数组元素,\\ n);
INT I = 0; 对于(i = 0; I<大小; ++ I)
{
的printf(%C,数组[我]);
} 残培(); 返回0;
}
这两个编译器的错误信息是相似的。
F:\\ _源 - codeS \\ main.c中在功能`主':8 F:\\ _源 - codeS \\ main.c中可变大小的物体可能无法初始化
在C89 / 90语言数组的大小必须由一个整体的恒前pression指定的(一般如此C99作为好)。在C A const int的
的对象不是一个的恒前pression 的,这就是为什么你不能用它来指定数组大小。注:这是C和C ++之间的一个显着的区别
在C语言中词的恒的是指的文字的常数,即 5
, 10.2
, 0xFF的
,'A'
等(枚举常量也常量的,是precise)。 const int的
对象,再一次,不是的恒的C和不能用于构建恒恩pressions。
如果您想pre-声明一个命名常量被使用在C数组大小,您可以选择使用的#define
或枚举
。这同样适用于区分标签,位字段大小和每一个其他上下文需要恒定的前pression。
请参阅了解更多详情。
Why doesn't this C program compile? What is wrong with this?
I have tried it on wxDevC++
and Turbo C++ 3.0.
Main.c
#include<stdio.h>
#include<conio.h>
const int SIZE = 5;
int main(int argc, char ** argv)
{
char array[SIZE] = {'A', 'B', 'C', 'D', 'E'};
printf("Array elements are,\n");
int i=0;
for(i=0 ; i<SIZE ; ++i)
{
printf("%c ", array[i]);
}
getch();
return 0;
}
Error Messages on the both of the compilers are similar.
f:\_Source-Codes\main.c In function `main':
8 f:\_Source-Codes\main.c variable-sized object may not be initialized
Array size in C89/90 language must be specified by an integral constant expression (in general true for C99 as well). A const int
object in C is not a constant expression, which is why you can't use it to specify array size. Note: this is one prominent difference between C and C++.
In C language the term constant refers to literal constants, i.e. 5
, 10.2
, 0xFF
, 'a'
and so on (enum constants are also constants, to be precise). const int
object, once again, is not a constant in C and cannot be used to build constant expressions.
If you want to pre-declare a named constant to be used as array size in C, you have to use either #define
or enum
. The same applies to case labels, bit-field sizes and every other context requiring a constant expression.
See this for more details.
这篇关于为什么没有这个C程序编译?有什么不对呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!