Ahojte,
mohol by mi niekto vysvetliť pár statmentov a operatorov...:
:?, XOR, a using v C#, a ešte #pragma v C++
dík
Operators, Statements...
-
Biohazard66
Light Expert
- Príspevky: 63
- Registrovaný: 08 nov 2011, 19:16
Re: Operators, Statements...
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).
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).
Re: Operators, Statements...
A ešte si prehliadol ternárny operátor (:?), takže doplním:
Ternárny operátor : ? sa používa podobne ako podmienka.
Napr.
nahradí podmienku
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
čo znovu znamená to isté, no je tam vidieť ten rozdiel.
Alebo napr. praktickejšie využitie:
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)
Ternárny operátor : ? sa používa podobne ako podmienka.
Napr.
Kód: Vybrať všetko
a < 0 ? return true : return false;Kód: Vybrať všetko
if ( a < 0 ) return true; else return false;Kód: Vybrať všetko
return ( a > 0 ? true : false )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)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)
Re: Operators, Statements...
Na to
ma ako prve napadlo ze sa mu nevydaril smajlik
A k tomu linkovaniu
BTW: #pragma once ani include guard ta nezachrani pred linkovanim, pretoze to sluzi na ochranu kompilacie.
A k tomu linkovaniu
Kód: Vybrať všetko
#pragma comment(lib, "nejaka_kniznica.lib")-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Operators, Statements...
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
.
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