Ez miért nem jó? C++
//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'
//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;
}
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;
}
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!