Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
01.11.15, 15:49
|
#1
|
Anfänger
Registriert seit: Apr 2012
Beiträge: 11
Bedankt: 0
|
c++ hilfe
#include <iostream>
using namespace std;
class starter{
private :
int tag;
int monat;
int jahr;
public :
int getTag(){ return tag;}
int getMonat(){ return monat;}
int getJahr(){ return jahr;}
void set(int t, int m ,int j);
void get();
starter(int t, int m, int j);
};
starter :: starter(int t, int m, int j)
{
set(t,m,j);
}
void starter::get()
{ //cout<<"DATUM "<<getTag()<<"."<<getMonat()<<"."<<getJahr()<<endl ;
cout<<"DATUM "<<tag<<"."<<monat<<"."<<jahr<<endl;
}
void starter::set(int t, int m, int j)
{
if (j<1970||j>2099)
j = 1970;
if (m<1 || m>12)
m =1;
if (t<1 || t>30)
tag = t; monat = m; jahr = j;
};
int main(){
starter datum(11,10,1990);
datum.get();
return 0;
}
Nachdem kompilieren beim Ausführern des programmes
DATUM 1354673184.10.1990
Wieso zeigt er mir die Speicheradresse beim Tag an ?
|
|
|
01.11.15, 20:30
|
#2
|
Anfänger
Registriert seit: Jul 2015
Beiträge: 13
Bedankt: 4
|
Ist richtig!
|
|
|
07.11.15, 11:06
|
#3
|
Anfänger
Registriert seit: Dec 2010
Beiträge: 1
Bedankt: 0
|
das Problem ist deine set-Methode. Wenn man die mal ordentlcih formatiert, sieht man es auch schon:
Code:
void starter::set(int t, int m, int j)
{
if (j<1970||j>2099)
j = 1970;
if (m<1 || m>12)
m =1;
if (t<1 || t>30)
tag = t;
monat = m;
jahr = j;
};
falls die Bedingung "(t<1 || t>30)" nicht zutrifft, wird folglcih die variable "tag" nicht gesetzt und ist weiterhin nicht initialisiert. Und dadurch bekommst du als Ausgabe später eben den Wert ausgegeben, der als integer interpretiert in dem speicherbereich liegt.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.
().
|