Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Такой вот прикол, Глюк с printf(%f)  
V
    Опции темы
NDQuattro
Дата 12.4.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 18.7.2008
Где: Украина

Репутация: нет
Всего: нет



Есть элементарная прога. Передаю переменной itsSalary объекта Worker1 значние через метод SetSalary(), тоже самое делаю с Worker2. 
Класс:
Код

class Employee
{
public:
       int GetAge() const { return itsAge; };
       int GetYearsOfService() const { return itsYearsOfService; };
       int GetSalary() const { return itsSalary; };
       void SetAge(int Age) { itsAge = Age; };
       void SetYearsOfService(int YearsOfService) { itsYearsOfService = YearsOfService; };
       void SetSalary(double Salary) { itsSalary = Salary; };
private:
        int itsAge;
        int itsYearsOfService;
        float itsSalary;
};

Прога:
Код

#include <iostream>
#include "Employee.h"
#include <stdio.h>

using namespace std;

int main()
{
   Employee Worker1,Worker2;
   Worker1.SetAge(18);
   Worker1.SetYearsOfService(5);
   Worker1.SetSalary(501.5);
   Worker2.SetAge(19);
   Worker2.SetYearsOfService(6);
   Worker2.SetSalary(677.3452);
   cout << "Bo3PaCT /7ePBoro Pa6oTHuKa: \t" << Worker1.GetAge() << endl;
   cout << "CTa>I< /7ePBoro Pa6oTHuKa: \t" << Worker1.GetYearsOfService() << endl;
   cout << "3aP/7JIaTa /7ePBoro Pa6oTHuKa: \t"; printf("%d\n", Worker1.GetSalary()); 
   cout << "Bo3PaCT BToPoro Pa6oTHuKa: \t" << Worker2.GetAge() << endl;
   cout << "CTa>I< BToPoro Pa6oTHuKa: \t" << Worker2.GetYearsOfService() << endl;
   cout << "3aP/7JIaTa BToPoro Pa6oTHuKa: \t"; printf("%d\n", Worker2.GetSalary());
   system("PAUSE");
   return 7;
}


Объекту Worker1 передал Salary равно 501.5, после чего пробую выводить его с помощью 
Код

printf("%f\n", Worker1.GetSalary()); 


Результат - выводит значение itsSalary с объекта Worker2!!! 
При смене же %f на %d - все работает нормально.

Может я что то намутил, не знаю. Помогите разобраться плз...

Это сообщение отредактировал(а) NDQuattro - 12.4.2009, 19:55
PM MAIL   Вверх
Anikmar
Дата 12.4.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(NDQuattro @  12.4.2009,  19:54 Найти цитируемый пост)
int GetSalary() const { return itsSalary; };

Этот метот должен int возвращать?
PM MAIL ICQ   Вверх
zim22
Дата 12.4.2009, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(NDQuattro @  12.4.2009,  19:54 Найти цитируемый пост)
 cout << "3aP/7JIaTa BToPoro Pa6oTHuKa: \t"; printf("%d\n", Worker2.GetSalary());

зачем вы мешаете printf c cout?
если вы хотите выводить в cout состояние объекта, то перегрузите оператор << для работы с вашим классом.
Код

std::ostream &operator<<(std::ostream &out, const Employee& e)
{
   out << "hello";
  return out;
}

а потом в программе просто используйте cout для вашего объекта
Код

Employee employee;
std::cout << employee;


Это сообщение отредактировал(а) zim22 - 12.4.2009, 20:06


--------------------
PM MAIL   Вверх
NDQuattro
Дата 12.4.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 18.7.2008
Где: Украина

Репутация: нет
Всего: нет



Anikmar
точно... как же туплю))) спасибо!

zim22 
Благодарю за идею, но я еще не столь умный чтобы понять все что Вы написали; т.е. перегрузка операторов для меня еще не известна) 
Все же ничего, в скорем времени разберусь. THANKS AWFULLY!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.