【发布时间】:2012-08-24 17:52:03
【问题描述】:
#include <stdio.h>
main()
{
int i = 10;
static int a = i;
if(a==10)
printf("yes 1st comparision is equal\n");
else
printf("no 1st comparision is not equal\n");
if(i==10)
printf("yes 2nd comparision is equal\n");
else
printf("no 2nd comparision is not equal\n");
a=15;
if(a==i)
printf("yes 3rd comparision is equal\n");
else
printf("no 3rd comparision is not equal\n");
}
为什么a重新初始化为15,输出为no 3rd comparision is not equal
而输出应该是yes 3rd comparision is equal?
【问题讨论】:
-
a是 15,i是10-- 它们不相等...static变量不是引用。 -
C 不是一种面向对象的语言,因此没有将值类型作为对象的内在概念。 C 中的
int实际上只是一个(通常是四个)字节序列,仅此而已。 -
@veer 我想知道的是为什么“a”被重新初始化为 15
-
因为您为其分配了值 15:
a=15; -
您必须将其编译为 C++,而不是 C。在 C 中,
static int a = i;行是一个错误;静态对象的初始化器必须是编译时常量。
标签: c variables pointers static