Funktion die int zurückgibt geht nicht
-
Ich benutze in einer Funktion Folgendes:
Thread::Sleep(Sleep_Back_Outside_Sensor());
Hier die Funktion:
static int Sleep_Back_Outside_Sensor() { if ( while2_int >= 1500 ) { get_back_time = 120; } else if ( while2_int >= 100 ) { get_back_time = 400; } return get_back_time; }
und die Variable while2_int:
while (while2 == true) { Thread::Sleep(5); while2_int = while2_int + 5; if (Variable5 == false) { Thread::Sleep(30); while2 = false; } }
Doch es wird nichts zurückgegeben nur die Zahl 0, obwohl while2_int einen Wert unter 100, meistens 80 oder 70.
Wo liegt der Fehler?Mfg. BNS
-
molch schrieb:
Doch es wird nichts zurückgegeben nur die Zahl 0, obwohl while2_int einen Wert unter 100, meistens 80 oder 70.
Wo liegt der Fehler?Darin, dass du get_back_time für eben diesen Fall niemals etwas zuweist?
-
molch schrieb:
Darin, dass du get_back_time für eben diesen Fall niemals etwas zuweist?
Quatsch
Daran liegt das nicht!
if ( while2_int >= 1500 ) { get_back_time = 120; } else if ( while2_int <= 100 ) { get_back_time = 400; } return get_back_time;
Er fragt bei else if ab ob der Wert Größer ist als 100 und nicht kleiner.
Dreh ändere >= in <=Gruß Doug_HH
-
Doug_HH schrieb:
Quatsch
Daran liegt das nicht!
Ach!
Gut, dass du weißt, was der Code tun soll. Verrat mir mal deinen Glaskugelhändler!
Dreh ändere >= in <=
Das heißt, deine Glaskugel hat dir gesagt, dass get_back_time nichts zugewiesen werden soll, wenn while2_int zwischen 101 und 1499 liegt?
-
Visual Studio C++ 2005 IDE.
"get_back_time" bekommt den Wert 0 Automaisch zugewiesen, deswegen wir auch der Wert 0 wieder ausgegeben.
#include "stdafx.h" using namespace System; static int Sleep_Back_Outside_Sensor() { int while2_int; int get_back_time; if ( while2_int >= 1500 ) { get_back_time = 120; } else if ( while2_int <= 100 ) { get_back_time = 400; } return get_back_time; } int main(array<System::String ^> ^args) { Console::WriteLine("Das ist der Wert {0}",Sleep_Back_Outside_Sensor()); return 0; }
-
Der ursprüngliche Code gibt 0 zurück, wenn while2_int kleiner als 100 ist. Dein Code tut das, wenn while2_int größer als 100, aber kleiner als 1500 ist. Woher weißt du, dass das das gewünschte Verhalten ist?
-
Gut da gebe ich Dir recht.
Nur am Code sehe ich, dass Größer 1500 abgefragt wird.
Dann macht doch wohl Größer 100 keinen Sinn. Oder?
Sonst müsste er == 1500 oder ==100 abfragen.Mein Code gibt den Wert 400 aus, wenn while2_int kleiner 100 ist.
Debugg das doch mal.
-
Doug_HH schrieb:
GNur am Code sehe ich, dass Größer 1500 abgefragt wird.
Dann macht doch wohl Größer 100 keinen Sinn. Oder?Doch, für den Bereich zwischen 100 und 1499. Durch das else braucht man die obere Schranke nicht mehr zu prüfen.
Ich glaube, wir kommen nicht weiter, ohne dass molch sagt, was das ganze tun soll. Der Code passt zum beschriebenen Verhalten, aber das gewünschte Verhalten hat er nicht verraten.
-
Gut machen wir das.
-
ich musste das <= >= umdrehen jetzt geht's.