Podmínka if (wParam & MK_CONTROL) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Podmínka if (wParam & MK_CONTROL) – C / C++ – Fórum – Programujte.comPodmínka if (wParam & MK_CONTROL) – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
11. 7. 2010   #1
-
0
-

Dobrý den,

pročítám zde i jinde seriály o Win32 API. V jednom ukázkovém případu jsem našel zápis



if (wParam & MK_CONTROL){
/*určitá podmínka*/
}


mě by zajímalo co znamená to znaménko "&" ..vím,že kdyby byli dvě,tak by to to bylo jako AND (resp.: "a zároveň") .. jde mi o pochopení,co verze s tímto jedním znamínkem "&" znamená a kdy jí použít,event proč?..

Děkuji

Nahlásit jako SPAM
IP: 94.112.250.–
Reklama
Reklama
KIIV+42
God of flame
11. 7. 2010   #2
-
0
-

& se cte jako AND.. alias 'A' ci jeste specificteni 'A zaroven' nebo take 'logicky soucin'
v C mas logicky AND (&&) a aritmeticky AND (&)
logicky se pouziva v podminkach .. cokoliv jineho nez nula je brano jako logicka jednicka ..
tj. 243 && 445245 == 1
pripadne 243 && 0 == 0

nicmene u aritmetickeho & se logicky soucin dela pro KAZDY bit argumentu zvlast.. tj. pro kazdy par bitu na stejne pozici se dela logicky soucin zvlast (formalne to udela procesor samozrejme najednou)
vypada to pak v binarnich cislech takto 1001 & 1100 == 1000 a kdyz by tam bylo 1001 && 1100 == 0001
proste bit po bitu


a protoze vsechny pozice kde je 0 se vynuluji, pouziva se to na takzvane "maskovani"
tj. mam treba 32b cislo a v nem 32 ruznych priznaku.. na kazde pozici je neco jineho.. a pokud to chci pouzit v podmince, musim to nejak zamaskovat.. aby to ostatni bity neovlivnily--

takze:
01111111 11111111 00100110 10101111 a zajima me jen 3. bit (pocitano od nulteho)

tak nic jednodussiho cislo & 8 == 1 ale treba 4. pozice: cislo & 16 == 0

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
12. 7. 2010   #3
-
0
-

Děkuji za vyčerpávající odpověď :) , až nyní jsem svědkem toho, že mohu využít svoje znalosti z předmětu "Číslicová technika" kde jsme podobne operace probírali. Jelikož jsme z c++ začal nedávno,ještě furt mi to myslí v PHP, kde by podobná věc byla řešena místo "&" znaménky "==", proto mě to udivilo... ještě jednou tedy děkuji za vysvětlení

Nahlásit jako SPAM
IP: 94.112.250.–
KIIV+42
God of flame
12. 7. 2010   #4
-
0
-

hlavne pokud si ji pochopil, tak se budou hned delat podminky mnohem lepe..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
zdenda
~ Anonymní uživatel
257 příspěvků
12. 7. 2010   #5
-
0
-

ještě furt mi to myslí v PHP, kde by podobná věc byla řešena místo "&" znaménky "=="


Podobná věc by i v PHP byla řešena operátorem &. Pokud vidíš podobu s ==, tak jsi to vysvětlení nepochopil a přečti si ho ještě jednou (především třetí odstavec).

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 89 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý