Как сделать следующее с C? - PullRequest
       4

Как сделать следующее с C?

0 голосов
/ 21 сентября 2010

В основном я хочу создать int x для каждого случая, когда выполняется условие, что-то вроде ...

while(CONDITION){
    if(int x = 100){
       //create a new int
       //refrence newly created variable
      }
   }

Затем я хочу снова пройти через цикл, но проверяю вновь созданную переменную вместо x. Надеюсь, это достаточно ясно!

Ответы [ 4 ]

2 голосов
/ 21 сентября 2010

В приведенном ниже фрагменте C99

for (int i = 0; i < 4; i++) {
    int x;
    x = i * 2;
}

x - это абсолютно новый x каждый раз, когда проходит цикл.
Во время выполнения этого фрагмента программа будетбыть 4 разными x с.

2 голосов
/ 21 сентября 2010

В языке C нет понятия "создание целого".Вы можете присвоить новое значение существующему int, если хотите:

int x, newx;
while(CONDITION){
   if(x == 100){
      newx = x;
   }
}
0 голосов
/ 21 сентября 2010

Ваш вопрос не совсем ясен, но я думаю, что рекурсия может вам помочь.

void do_it(void) {
    if (CONDITION) {
        int X = something_having_to_do_with_condtion(CONDITION); // the code you had
                                                     // for initializing X made no sense
        do_it(void); // recursive call

        process_x(X);
    }
}

Вы могли бы делать подобные вещи с другим динамическим размещением, но издержки, вероятно, больше, чем у рекурсии.

0 голосов
/ 21 сентября 2010

Ваш вопрос трудно понять, но он звучит почти так, как если бы вы хотели цикл for. Э.Г.

for (int x = 100; CONDITION; /* do something to x here */) {
  /* use x */
}

Это запустит x на 100 и продолжит цикл, пока CONDITION верно. В зависимости от того, что вы заменяете /* do something to x here */, значение x в цикле будет меняться каждый раз. Для конкретного примера:

for (int x = 100; x < 200; x = x + 1) {
  printf("%d", x);
}

напечатает все числа от 100 до 199 (включительно). Обратите внимание, что x = x + 1 также может быть написано ++x или x++; Я написал это от руки для ясности, так как вы, кажется, плохо знакомы с C.

Выше предполагается, что у вас есть компилятор C99. Если ваш компилятор поддерживает только C89, вам придется объявить x в начале функции и заменить int x = 100 просто x = 100.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...