Rätsel bei bool !
-
#include <iostream.h>
#include <stdlib.h>void main(void)
{
bool a=false, b=false, c=false, d=false;
float ergebnis[1];cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
cout << "d=" << d << endl;
for (int i=0; i<2; i++){ ergebnis[i]=1; }
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
cout << "d=" << d << endl;system ("PAUSE");
}Ergebnis ist :
0
0
0
0
63
128
0
0Kann das jemand nachvolziehen ?...ich benutze Borland 4.9.5.0 . Danke !
-
Ja Kann ich.
Du schreibst auf ergebnis[1] damit überschreibst du a und b.
du hast ergebnis mit nur einem element definiert.
Kurt
-
Buffer Overflow (Ergebnis enthält nur einen Wert, du greifst auf zwei zu)
-
rumcajs007 schrieb:
#include <iostream.h> #include <stdlib.h> int main(void) { float ergebnis[1]; for (int i=0; i<2; i++) ergebnis[i]=1; system ("PAUSE"); return 0; }Na schreibt da nicht jemand über seinen Speicher hinaus?
-
for (int i=0; i<2; i++){ ergebnis[i]=1; }ist keine gute Idee, weil du ein floatarray mit nur platz für ein float allokiert hast, hier aber 2 mal reinschreibst.
wenn du 2mal einen wert zuweisen willst, dann bittefloat ergebnis[2];zusatz:
ändere mal die obersten Zeilen wie folgt um#include <iostream> #include <cstdlib> using namespace std; int main()//edit hier ist mir heute echt zuviel los gg
-
Hi,
ich würde mal sagen deine schleife verursacht das.
Das passiert etwa in deiner schleife:
i=0 erg[0]=1 i=1 erg[1]=1abbruch.
Du bist off-by-one. Du hast nur platz für einen float.
//EDIT das nenn ich mal zu langsam
-
nein, langsam ist anders; aber 4 antworten in 42 sekunden sind denk ich rekordverdächtig...
-
Wahnsinn ! Mit float ergebnis[2]; geht's. Danke !!!! In 2 min. 3 Antworten, net schlecht !!! DANKE!!!
-
shapeless schrieb:
nein, langsam ist anders; aber 4 antworten in 42 sekunden sind denk ich rekordverdächtig...
Besser noch. Es waren 5 Antworten in 44 sekunden.
K
Edit: Doch nicht eine war 2 min später.
-
...ich meld mich nochmal !
