#c
#c
Вопрос:
Я объявляю это:
int xstartoftable;
void drawframe();
int main()
{
int xstartoftable = 80-TLENGTH;
drawframe();
return 0
}
void drawframe();
{
gotoXY(xstartoftable - 1, ystartoftable - 1);
}
Проблема в том, что при отладке значение xstartoftable является случайным, не равным значению в main() . Код составляет более 150 строк, это только те части, которые необходимы.
Комментарии:
1. Это не настоящий код. Пожалуйста, опубликуйте свой фактический код.
2. Это ваш фактический код? Для меня это не компилируется.
3. это
somevalue
константа? Что такоеy
? В какой момент кода вы смотрите на x?4. Убедитесь, что у вас нет
int x
нигде вmain
ori_use_x
first .5. Было бы проще ответить на ваш вопрос, если бы вы опубликовали свой фактический код. Скопируйте и вставьте код, который вы передали компилятору; не вводите его повторно.
Ответ №1:
Это потому, что вы повторно объявляете свою переменную внутри 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
}
В некоторых компиляторах вы можете даже получить сообщение об ошибке.
Ответ №2:
int xstartoftable = 80-TLENGTH;
объявляет другую xstartoftable
, которая затеняет глобальную. у g есть удобное -Wshadow
предупреждение, которое улавливает этот материал.
Вместо этого вам нужно присвоение xstartoftable = 80-TLENGTH;
.