2009-12-17 3 views
2

Учитывая выражение, вводимое как 68 + 32, мы должны оценить, не используя точку с запятой в нашей программе. Если это будет что-то внутри цикла if или for? Ссылка: https://www.spoj.pl/problems/EXPR2/вычисление выражения без использования точки с запятой

+0

Почему эта домашняя работа помечена? Это проблема программирования, а не домашняя работа. – Juan

+0

@Shmoopty nah, похоже, проблема заключается в анализе грамматики в C w/o с использованием точек с запятой. – Qberticus

+0

Я не просил об этом ни одной домашней работы. Morever я парень clollege – d3vdpro

ответ

6

Вы можете использовать, если и оператор comma, что-то вроде этого:

if(expr1, expr2, expr3, ...) {} 

Это было бы эквивалентно

expr1; 
expr2; 
expr3; 
... 

Чтобы использовать переменные без каких-либо предупреждений, вы можете определить функцию в recieves в необходимые вам типы данных, которые вы вызываете из вашей основной сети, например:

void myFunc(int a, double b) { 
    if (expr1, expr2) { } 
} 
int main() { 
    if (myFunc(0, 0), 0) { } 
} 

Обратите внимание, что в основном необходимо добавить , 0, в противном случае возникает ошибка, так как возврат void не игнорируется.

6

Вы можете использовать конструкции, как это:

if (i++) {} 

Однако, это еще не дает ответа, как объявлять переменные. Тем не менее, один трюк вы можете сделать, это:

#include <iostream> 

int main(double x, double y) { 
    if ((x = 1)) {} 
    if ((y = 2)) {} 
    if (std::cout << x << ", " << y << std::endl) {} 
} 

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

+0

можем ли мы объявить переменную внутри if. – d3vdpro

+0

+1 за нарушение правил основных параметров. – wallyk

+0

Вы можете объявить переменную внутри «if», но она будет существовать только в области «if». –

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