[C++] Borland C++ 5.5.1 Warning W8004

elbdom

Mitglied
Hallo,

Borland C++ 5.5.1 gibt mir beim compiler den Fehler: Warning W8004 name.cpp is assigned a value that is never used in function main()

Bei bedarf kann ich auchnochmal den Source Posten!

Hoffe die Infos reichen.

mfg
Elbdom
 
Zuletzt bearbeitet:
Fehler

Warning W8004 kde-Kniffel.cpp 36: 'nW5' is assigned a value that is never used i
n function main()
Warning W8004 kde-Kniffel.cpp 35: 'nW4' is assigned a value that is never used i
n function main()
Warning W8004 kde-Kniffel.cpp 34: 'nW3' is assigned a value that is never used i
n function main()
Warning W8004 kde-Kniffel.cpp 33: 'nW2' is assigned a value that is never used i
n function main()
Warning W8004 kde-Kniffel.cpp 32: 'nW1' is assigned a value that is never used i
n function main()

code
Code:
//KDE-Kniffel version 0.1 beta by Mitsuomi-san
#include <Iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
	//variablen
	char chMenu;
	
	// Menü
	cout << "Wilkommen im KDE-Kniffel" << endl;
	cout << " " << endl;
	cout << "(N)eues Spiel" << endl;
	cout << "(A)bout" << endl;
	cout << "(E)nde" << endl;

	// chMenu
	cout << "Menu eingabe: " << endl;
	cin >> chMenu;

	switch (chMenu)
	{
		case ('n'):
		case ('N'):
		{
		 // Spiel
		 cout << "Spiel start" << endl;
		 // Variablen
		int nW1 = 0;
		int nW2 = 0;
		int nW3 = 0;
		int nW4 = 0;
		int nW5 = 0;
		int nSchleife = 0;
		int nForDice;
		int nEiner = 0;
		int nZweier = 0;
		int nDreier = 0;
		int nVierer = 0;
		int nFuenfer = 0;
		int nSechser = 0;

		while (nSchleife != 2)
		 {
		  //Punkte liste
		  cout << "Einer  : " << nEiner << endl;
		  cout << "Zweiter: " << nZweier << endl;
		  cout << "Dreier : " << nDreier << endl;
		  cout << "Vierer : " << nVierer << endl;
		  cout << "Fuenfer: " << nFuenfer << endl;
		  cout << "Sechser: " << nSechser << "\n" << endl;

		  cout << "Wehle: \n" << endl;
		  cout << "1. Wuerfeln" << endl;
		  cout << "2. Spiel Beenden \n" << endl;
		  cin >> nSchleife; 

		  if (nSchleife == 1)
			//würfeln
			 srand( (unsigned)time( NULL ) );
			 nW1 = rand() % 6 + 1;
			 cout << "\n" << "W1: " << nW1 << endl;
			 cout << "Weiter mit Return..." << endl; 
			 cin.get();
			 cin.get();
			 srand( (unsigned)time( NULL ) );
			 nW2 = rand() % 6 + 1;
			 cout << "\n" << "W2: " << nW2 << endl;
			 cout << "Weiter mit Return..." << endl; 
			 cin.get();
			 cin.get();
			 srand( (unsigned)time( NULL ) );
			 nW3 = rand() % 6 + 1;
			 cout << "\n" << "W3: " << nW3 << endl;
			 cout << "Weiter mit Return..." << endl; 
			 cin.get();
			 cin.get();
			 srand( (unsigned)time( NULL ) );
			 nW4 = rand() % 6 + 1;
			 cout << "\n" << "W4: " << nW4 << endl;
			 cout << "Weiter mit Return..." << endl; 
			 cin.get();
			 cin.get();
			 srand( (unsigned)time( NULL ) );
			 nW5 = rand() % 6 + 1;
			 cout << "\n" << "W5: " << nW5 << endl;
			 cout << "Weiter mit Return..." << endl; 
			 cin.get();
			 nSchleife = 0;

						
		  if (nSchleife == 2)
			// ende
			cout << "\n" << "Spiel zu ende Punkte: " << nW1 + nW2 + nW3 + nW4 + nW5 << "\n" << endl;

		  else
			cout << "> Falsche Eingabe! <" <<endl;
		 }

		} break;

		case ('a'):
		case ('A'):
		{
		// About
		cout << "\n\n" << endl;
		cout << "KDE-Kniffel v 0.1 Beta" << endl;
		cout << "Code By Mitsuomi-San" << endl;
		cout << " Thx 4 Visit the Game\n" << endl;
		} break;

		case ('e'):
		case ('E'):
		{
		// ende
		} break;

		default:
		{
		cout << "Falsche Eingabe!\n\n";

		}

	}
	cout << "Bis zum naechsten Mal!" << endl;
	return 0;
}
 
Dein Compiler weist Dich nur darauf hin, daß Du diese Variablen mit einem Wert initialisierst, ihnen dann aber einen anderen Wert zuweist, ohne den Initialisierungswert zu verwenden (irgendwo lesend auf die Variablen zuzugreifen). Wenn du die Initialisierung wegläßt, sollten die Warnings verschwunden sein.
 
also um es richtig zu verstehen:
wen ich den variablen keine 0 mehr an anfang zu weise ist alles wider in ordnung :)
 
Exakt!
Wenn Du dann versuchst, die Variablen zu lesen, bevor Du ihnen einen Wert zugewiesen hast, wird der Compiler Dir wieder Warnings geben, daß du auf eine uninitialisierte Variable zugreifen willst.
 
Warning W8004 kde-Kniffel.cpp 32: 'nW1' is assigned a value that is never used i

nW1 wird ein Wert zugewiesen, der nie benutzt wird.
Hat in erster Linie mal nichts mit der initialisierung zu tun, sondern soll dich nur darauf hinweisen, dass du einen Wert <in diesem fall den bei der initialisierung zugewiesenen>
den die Variablen annehmen einfach nicht verwendest.
Code:
nW1 = rand() % 6 + 1; //hier weist du nW1 die bis dahin den bislang nicht verwendeten Wert 0 hatte einen neuen Wert zu

cout << "\n" << "W1: " << nW1 << endl; //hier verwertest du den neuen Wert nW1

Damit erkennt es die "0" quasi als nicht ausgewertet und warnt nur "du könntest da was vergessen haben".
Wenn du bspw sagen würdest
Code:
nW1 += (rand() % 6 + 1)
Sollte die Warnung eigentlich auch nicht mehr erscheinen. - Kann aber getrost ignoriert werden, ist nur ne Warnung, kein fehler.
 
Zurück