2011-10-06 51 views
0

我声明此:改变在主变量的值设定为可用于其它功能(C++)

int xstartoftable; 
void drawframe(); 

int main() 
{ 
    int xstartoftable = 80-TLENGTH; 
    drawframe(); 

    return 0 
} 
void drawframe(); 
{ 
    gotoXY(xstartoftable - 1, ystartoftable - 1); 
} 

的问题是,当我调试,xstartoftable的值是随机的,不等于所述一个在main()中。代码超过150行,这只是需要的部分。

+3

这不是真正的代码。请发布您的实际代码。 –

+1

这是你的实际代码?它不适合我。 – Kevin

+0

是'somevalue'常数?什么是'y'?代码中的什么地方你看着x? –

回答

5

这是因为你在main中重新声明了你的变量。

int main() 
{ 
    int xstartoftable = 80-TLENGTH; //extra declaration here 
    drawframe(); 

    return 0; 
} 

,而不是仅仅做:

int main() 
{ 
    xstartoftable = 80-TLENGTH; //leave out declaration 
    drawframe(); 

    return 0; 
} 

这是类似的:

int main() 
{ 
    int x = 0; 
    { 
     int x = 1; 
    } 
    printf("%d",x); 
    //will print 0 
} 

在一些编译器,你甚至可能会得到一个错误。

1

int xstartoftable = 80-TLENGTH;声明了一个不同的xstartoftable,它影响了全局。 g ++有一个方便的-Wshadow警告,捕捉这些东西。

您需要改为xstartoftable = 80-TLENGTH;