2016-06-20 4 views
-4

Я новичок в C++, в главе 2 теста LearnCpp.com. Я застрял и задал вопрос. Можете ли вы добавить переменные внутри инструкции std :: cout? Например:Можете ли вы добавить переменные внутри «cout»

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

EDIT: Извините, что не публикует весь код. Я также новичок в форумах. Я добавил (), как кто-то предложил. Когда я запускал программу, я думаю, что я видел, что это отобразить ответ на долю секунды, и это не показывает, что Press any key to continue. . .

#include "stdafx.h" 
#include <iostream> 

int main() 
{ 
double first_value; 
double second_value; 
char user_operator; 

std::cout << "Enter a double value: "; 
std::cin >> first_value; 
std::cout << "Enter a second double value: "; 
std::cin >> second_value; 
std::cout << "Enter one of the following (+, -, *, /): "; 
std::cin >> user_operator; 

if (user_operator == 43 || user_operator == 45\ 
    || user_operator == 42 || user_operator == 47) 
    switch (user_operator) 
    { 
     case 43: 
      std::cout << " " << (first_value + second_value) << "\n"; 
      break; 
     case 45: 
      std::cout << " " << (first_value - second_value) << "\n"; 
      break; 
     case 42: 
      std::cout << " " << (first_value * second_value) << "\n"; 
      break; 
     case 47: 
      std::cout << " " << (first_value/second_value) << "\n"; 
      break; 
    } 
else std::cout << "Please enter a valid operator."; 

return 0; 

}

+3

Что-то пошло не так, когда вы попытались изолировать свою актуальную проблему. Возможно, ни один из «случаев» не был взят. – LogicStuff

+1

Что такое инструкция 'switch'? Вероятно, это источник проблемы. Примечание. Вы можете 'cout' ваше выражение, потому что' << 'имеет более низкий приоритет, чем арифметические операторы (+ - * ./). Даже если бы вы этого не сделали, вы могли бы поставить выражение в круглые скобки. –

+3

_ @ marcellatwin_ Пожалуйста, не публикуйте фиктивный код, но [MCVE], который воспроизводит проблему, с которой вы сталкиваетесь. –

ответ

3

Да, вы можете выполнять операции в пределах цепочки std::ostream& operator<<(std::ostream&, T) вызовов. Вам просто нужно повиноваться operator precedence и поместить в круглую скобку (()) выражение, которое необходимо устранить, если это необходимо.

Вот фиксированный Demo.

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