Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Что неверно в коде?


Автор: асд1 20.7.2013, 17:47
user posted image

Выводит (age 0), a должна выводить (age -1)

Автор: feodorv 20.7.2013, 19:16
Цитата(асд1 @  20.7.2013,  18:47 Найти цитируемый пост)
Выводит (age 0), a должна выводить (age -1) 

Видимо, >> таки портит значение считываемой переменной, даже если ввод некорректен...

А Вы пробовали после 
Цитата(асд1 @  20.7.2013,  18:47 Найти цитируемый пост)
cin >> first_name >> age; 
 считать ещё чего-нибудь с cin?
Код

#include <iostream>

using namespace std;

int main()
{
  cout << "Please, enter your name and age.\n";
  char first_name[20] = "???";

  int age = -1;

  cin >> first_name >> age;
  cout << "hello, " << first_name << " (age " << age << ")\n";

  age = -1;
  cin >> first_name >> age;
  cout << "hello, " << first_name << " (age " << age << ")\n";
}

Автор: ZeUsM 29.7.2013, 11:50
Интересное наблюдение:
1. Код немного измененнный 
Код

string first_name = "???";

изменено на:
Код

char first_name[20] = "???";

MSVC 2010 - результат соответствует ожиданию.
Код

Input your name ang age ...
20 Guddy
Hello 20 age (-1)

На компиляторе MinGW 4.7.2
вывод
Код

Hello 20 age (0)

На компиляторе MinGW 4.4.0
Код

Input your name ang age ...
20 Guddy
Hello 20 age (-1)


Вот как - то так.  smile 

Автор: CosmoMan 29.7.2013, 14:43
Видимо разница в реализации стандартной библиотеки в разных версиях компиляторов. 
В одной версии в "age" не попала строка вообще(она не изменилась), в другой версии строка попала как ноль. 
Или вас удивляет что то другое?

Видимо оператор << переопределен для char и string по разному в разных версиях библиотеки std. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)