Kezdőoldal » Számítástechnika » Programozás » Ez miért nem jó? C++

Ez miért nem jó? C++

Figyelt kérdés

//main.cpp

# include <iostream>


typedef unsigned short ushort;


using std::cout;

using std::cin;

using std::endl;


int main()

{

const ushort pin = 1234;

const ushort pukk = 4567;

const ushort pukk2 = 6789;

ushort bead;

ushort szamlalo;

bool x = false;


ushort *pin = new ushort;

ushort *pukk = new ushort;

ushort *pukk2 = new ushort;

ushort *bead = new ushort;

ushort *szamlalo = new ushort;


*pin = pin;

*pukk = pukk;

*pukk2 = pukk2;

*szamlalo = 3;

*bead = NULL;


do

{

cout <<"Add meg a PIN-kodot: "; cin >> *bead;

if(*bead ==*pin)

{

cout <<"PIN-kod jo.";

}

else

{

*szamlalo--;

cout <<"PIN-kod rossz meg "<< *szamlalo <<" lehetoseged van \n";

}


}while(x == false);


cin.get();

return 0;

}


//Ez a hibaüzenet: conflicting declaration 'ushort *pin'


2011. dec. 15. 05:52
 1/5 A kérdező kommentje:

//main.cpp

# include <iostream>

# include <windows.h>


typedef unsigned short ushort;


using std::cout;

using std::cin;

using std::endl;


int main()

{

const ushort pin = 1234;

const ushort pukk = 4567;

const ushort pukk2 = 6789;

ushort bead = 0;

ushort szamlalo = 3;

bool x = false;


ushort *pin = new ushort;

ushort *pukk = new ushort;

ushort *pukk2 = new ushort;

ushort *bead = new ushort;

ushort *szamlalo = new ushort;


*pin = pin;

*pukk = pukk;

*pukk2 = pukk2;

*szamlalo = szamlalo;

*bead = bead;


do

{

cout <<"Add meg a PIN-kodot: "; cin >> *bead;

if(*bead ==*pin)

{

cout <<"PIN-kod jo.";

}

else

{

*szamlalo--;

cout <<"PIN-kod rossz meg "<< *szamlalo <<" lehetoseged van \n";

}


}while(*szamlalo > 0);


cin.get();

return 0;

}

2011. dec. 15. 06:01
 2/5 A kérdező kommentje:

Már jó csak nem értem miért írja ki,hogy még több mint 3000 lehetőségem van.


frissített:

//main.cpp

# include <iostream>

# include <windows.h>


typedef unsigned short ushort;


using std::cout;

using std::cin;

using std::endl;


int main()

{

const ushort pin = 1234;

const ushort pukk = 4567;

const ushort pukk2 = 6789;

ushort bead = 0;

ushort szamlalo = 3;

bool x = false;


ushort *Pin = new ushort;

ushort *Pukk = new ushort;

ushort *Pukk2 = new ushort;

ushort *Bead = new ushort;

ushort *Szamlalo = new ushort;


*Pin = pin;

*Pukk = pukk;

*Pukk2 = pukk2;

*Szamlalo = szamlalo;

*Bead = bead;


do

{

cout <<"Add meg a PIN-kodot: "; cin >> *Bead;

if(*Bead ==*Pin)

{

cout <<"PIN-kod jo.";

}

else

{

*Szamlalo--;

cout <<"PIN-kod rossz meg "<< *Szamlalo <<" lehetoseged van \n";

}


}while(*Szamlalo > 0);


cin.get();

return 0;

}

2011. dec. 15. 06:04
 3/5 A kérdező kommentje:
Miért nem lehet csökkenteni a mutatóban tárolt címen levő értéket a -- operátorral?
2011. dec. 15. 06:09
 4/5 A kérdező kommentje:
Érdekes így:-- nem lehet csökkenteni az értéket így pedig igen:-=1
2011. dec. 15. 06:11
 5/5 anonim ***** válasza:

Azért nem lehet, mert a -- operátornak nagyobb a preferenciája, mint a * dereferáló operátornak. A -=-nek meg kisebb.

Tehát ha bezárójeleznéd a kifejezést, a

*ptr -= 10;

az kvázi

(*ptr) -= 10;


Míg a --*ptr

csak *(--ptr)-ként értelmezhető. Azaz először eltolja a pointert, és utána dereferálja.

Ha így akarod, akkor --(*ptr);


Használj zárójeleket, ha bizonytalan vagy a precedenciában, illetve cppreference.com-on ott van egy szép táblázat.

2011. dec. 15. 08:57
Hasznos számodra ez a válasz?

További kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!