Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST]Bitwise operators, ik volg even niet.  (gelezen 872 keer)

[OPGELOST]Bitwise operators, ik volg even niet.
« Gepost op: 2011/02/15, 12:14:37 »
Hi allen,

hier een stukje code uit C# om ervoor te zorgen dat iemand alleen cijfers kan invoeren, en backspace en enter mag gebruiken aan de hand van de ASCII codes (48-57 is 0-9, 8 is backspace en 13 is enter)
Ik denk dat ik het verkeerd begrijp.

if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13)
Dit voorbeeld nemende, als iemand karakter 40 ingeeft.
Bij de eerste vergelijking is het minder als 48 maar niet meer dan 57, maar het is een OR, dus deze word true, toch?
Dan, het is niet 8 dus ook true, ook geen 13 dus die is ook true.
Uitkomst volgens mijn denkwijze is:
(true) && true && trueDus dan zou die het wel accepteren omdat het allemaal AND's zijn dus alles moet true zijn. Dit stukje code werkt echter zoals bedoelt, maar ik krijg mijn brein gewoon niet zover het te zien. Wie kan het om een simpele manier uitleggen waar ik overheen kijk?
« Laatst bewerkt op: 2011/02/15, 12:45:13 door Sander M »

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: Bitwise operators, ik volg even niet.
« Reactie #1 Gepost op: 2011/02/15, 12:47:55 »
Ik snap niet wat je probleem is. Volgens mij is jouw denkwijze correct.
Ik denk hetzelfde.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Re: [OPGELOST]Bitwise operators, ik volg even niet.
« Reactie #2 Gepost op: 2011/02/15, 12:48:15 »
Ik heb reeds gevonden wat ik over het hoofd zag, het statement eronder doet iets anders dan ik dacht.

if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13)
e.Handled = true;

Ik dacht dat Handled betekende dat hij hem accepteerde, maar dat is andersom, dit keyword zorgt ervoor dat je toestaanslag juist genegeerd wordt.
« Laatst bewerkt op: 2011/02/15, 13:09:34 door Sander M »

Offline Brumm3l

  • Lid
Re: [OPGELOST]Bitwise operators, ik volg even niet.
« Reactie #3 Gepost op: 2011/02/15, 12:48:50 »
Ik ben geen C# expert, maar het zou kunnen zijn dat de tweede vergelijking in de OR niet wordt gedaan, omdat de eerste waarde in de OR al true oplevert? Ik weet dat bepaalde SQL engines op die manier werken...


Edit: Al opgelost inmiddels.