2 trybye TRYBYE 于 2016.03.01 20:29 提问

C中不是不允许重复定义吗,但是可以重复声明是吧,这个程序中应该是重复定义吧

但是编译过了,什么原因呢,这是只定义没赋初值的情况下,如果给第一个赋初值,第二个不赋初值也是可以编译过的,

5个回答

caozhy
caozhy   Ds   Rxr 2016.03.01 20:32

这个程序是哪个程序,你的程序呢?

lx624909677
lx624909677   Ds   Rxr 2016.03.02 00:07

不允许重复定义,赋值和定义是两回事儿

TRYBYE
TRYBYE   2016.03.02 06:55

a应该是定义吧,除了2个a都给赋值外,其他都是可以通过编译的图片

caozhy
caozhy   Ds   Rxr 2016.03.02 08:06

printf里面灰色的字实在是看不见

TRYBYE
TRYBYE printf("hello,free")没影响
接近 2 年之前 回复
TRYBYE
TRYBYE 重点是那2个int a;
接近 2 年之前 回复
TRYBYE
TRYBYE 重点是那2个int a;
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.02 18:34

int a;
int a;
这么写是不行的。

int a;
extern int a;
int main()
{
a = 1;
return 0;
}
这是可以的。

TRYBYE
TRYBYE 你认为可行的相当于第一个是定义,第二个是声明,,,我的哪个你认为不行的是2次定义,?但是我用c——free编译过了,如果对2次都赋值的过不了的
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!