Operators, Statements...

Programovacie jazyky, rady, poradňa...
Biohazard66
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 63
Registrovaný: 08 nov 2011, 19:16

Operators, Statements...

Príspevok od používateľa Biohazard66 »

Ahojte,
mohol by mi niekto vysvetliť pár statmentov a operatorov...:
:?, XOR, a using v C#, a ešte #pragma v C++
dík
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Operators, Statements...

Príspevok od používateľa metthal »

XOR je bitova operacia, je to skratka z Exclusive OR, v slovencine sa to nazyva vylucujuce alebo.Plati ze

1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0

Using sa v C# pouziva na objektoch ktore pouzivaju IDisposable interface. Ide o to ze na tieto objekty musis volat Dispose(), ked s nimi dokoncis pracu, aby si uvolnil ich pamat. Using to vsak urobi za teba a ty nemusis volat Dispose(). Pouziva sa to pri roznych kratkodobych spojeniach, pri praci so subormi a podobne.

#pragma prepinac je direktiva pre kompilator. Nepoviem ti presnu definiciu, lebo ani sam ju presne neviem, skus si ju najst. Ale pokial sa nemylim tak to sluzi na iste specifikacie kompilatora z kodu, napriklad cez #pragma vies linknut kniznicu, alebo definovat kompilatoru aby tento subor nekompiloval niekolko krat (zname tiez ako header guard).
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Operators, Statements...

Príspevok od používateľa BX »

A ešte si prehliadol ternárny operátor (:?), takže doplním:
Ternárny operátor : ? sa používa podobne ako podmienka.
Napr.

Kód: Vybrať všetko

a < 0 ? return true : return false;
nahradí podmienku

Kód: Vybrať všetko

if ( a < 0 ) return true; else return false;
Je tu ale zásadný rozdiel a síce, že tento operátor môžeš používať ako výraz. Takže môžeš napísať niečo ako

Kód: Vybrať všetko

return ( a > 0 ? true : false )
čo znovu znamená to isté, no je tam vidieť ten rozdiel.

Alebo napr. praktickejšie využitie:

Kód: Vybrať všetko

objekt = ( p == NULL ? new Objekt() : p ) // objekt = ( ak je p NULL, prirad novy Objekt(), inak prirad p)
Btw. pragma je výmysel microsoftu, takže by som to nedával do súvisu s kompilátorom, ale skôr s editorom/vývojovým prostredím, ktorý sa o tieto značky stará a predstiera kompilátoru kód podľa nich.
A cez pragma vieš linknúť knižnicu? Fakt? Ja viem len o tom, že viem cez pragma once potlačiť násobné linkovanie súboru(typicky header)
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Operators, Statements...

Príspevok od používateľa metthal »

Na to :? ma ako prve napadlo ze sa mu nevydaril smajlik :D

A k tomu linkovaniu :wink:

Kód: Vybrať všetko

#pragma comment(lib, "nejaka_kniznica.lib")
BTW: #pragma once ani include guard ta nezachrani pred linkovanim, pretoze to sluzi na ochranu kompilacie.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Operators, Statements...

Príspevok od používateľa harrison314 »

v C# #pragma stratil vyznam, namiesto neho sa pouzivaju atributy ( riadenie kompilacie, debagovania, metainformacie k triedam, fieldom, primityvnim typom,... ).
No v C# sa pouziva iba na warning a guid a checksum pre subor.
Ono to nie je vynalez microsoftu, ked si pozriete dokumentaciu k gcc tak uvidite kolko veci #pragma dokaze :P .
Napísať odpoveď