вычисление выражения без использования точки с запятой - PullRequest
2 голосов
/ 17 декабря 2009

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

Ответы [ 2 ]

6 голосов
/ 17 декабря 2009

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

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

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

expr1;
expr2;
expr3;
...

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

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

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

6 голосов
/ 17 декабря 2009

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

if (i++) {}

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

#include <iostream>

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

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

...