2016-05-24 2 views
-2

Я пытаюсь определить константу, которая будет иметь в нем следующееОпределяющие уравнения с постоянной

ch[co].gold < 10000*100 

, как я могу это сделать, что-то вроде

define x = ch[co].gold < 10000*100; 

так, что каждый раз, когда я пишу

if (x) {say(cn,"You need 10 000 gold coins");} 

Или это невозможно?

+3

Хе-хе? Это C? –

+0

Да, это C действительно – Night

+0

Да, это называется булевым выражением - просто измените «define» на подходящий тип, например. 'bool' или' int'. Я рекомендую выбрать [книгу из этого списка] (http://stackoverflow.com/q/562303/253056) и сделать чтение, если вы хотите правильно изучить C. –

ответ

2

Функция:

int x(int val) { 
    return (val < 10000 * 100); 
} 

Использование

// ... 
    if (x(ch[co].gold)) { 
     printf("You need 10 000 gold coins.\n"); 
    } 
    // ... 
+2

'x()' могло бы иметь лучшее имя , например 'enoughgold()'. – pmg

1

Ну, вот мое решение

struct s { 
    int gold; 
}; 

const int co = 2; 

struct s ch[] = {112,2321,3234}; 

#define x() ch[co].gold < 10000*100 

int main(){ 
if (x()) { 

} 
return 0; 
} 
+0

Этот берет торт. Хорошо сделано, однако то, что я написал, является выдержкой из кода, ch [co] .gold извлекает int из структуры и просто сравнивает его с 10000 * 100. Поэтому просто спрашивайте, как и если можно упростить это сравнение до одного символа вместо его ввода (или ctrl c + ctrl v таким образом) – Night

0

ли это то, что вы ожидали?

#define x (ch[co].gold < 10000*100) 

Добавьте эту строку кода до места вы используете его, как правило, это чуть ниже #include с. Обычно мы используем заглавные буквы с более четкими значениями вместо x.

0

#define - это просто текстовое подмножество, выполняемое препроцессором.

Для того, чтобы сделать то, что вы говорите, что вы хотите использовать следующие #define:

#define x ch[co].gold < 10000*100 

Каждый раз, когда препроцессор встречает символ x он заменит его ch[co].gold < 10000*100.

Я думаю, что то, что вы действительно хотите, это сделать его надлежащей функцией, как было предложено pmg. Это более разумный выбор.

Смежные вопросы