Re: lun - Lucky Number

Liste des GroupesRevenir à s crypt 
Sujet : Re: lun - Lucky Number
De : rjh (at) *nospam* cpax.org.uk (Richard Heathfield)
Groupes : sci.crypt
Date : 16. Mar 2025, 16:55:10
Autres entêtes
Organisation : Fix this later
Message-ID : <vr6s90$232kc$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13
User-Agent : Mozilla Thunderbird
On 16/03/2025 14:57, Marcel Logen wrote:
Richard Heathfield in sci.crypt:
 
<snip>

#define BIT_QRY(x,i) (((x)[(i)>>3] & (1<<((i)&7)))!=0)
 This is actually another C question:
 Why does it have to be "(x)" and "(i)" everywhere instead of
"x" and "i"? What kind of "protection" is meant here?
Turn to Number 3 in your songsheets if you will, to this rather simpler macro:
#define BAD_DOUBLE(x) 2*x
and this invocation:
int e = 1;
int f = 29;
int g = BAD_DOUBLE(e+f);
We'd hope for a result of 60, but what we get is 31 because BAD_DOUBLE(e+f) expands to 2*e+f which is 2*1+29, and precedence requires the * to happen before the +.
Parentheses solve the problem:
#define GOOD_DOUBLE(y) 2*(y)
int h = GOOD_DOUBLE(e+f);
which expands to 2*(e+f) and gives us the 60 we were after.
They are not, however, a complete solution:
#define DODGY_DOUBLE(x) (x)+(x)
looks solid enough, but DODGY_DOUBLE(e++)
will expand to (e++)+(e++)
which modifies a value twice between sequence points, and the resultant behaviour is undefined by the rules of the language.
If in doubt, steer well clear of side effects in macros.
--
Richard Heathfield
Email: rjh at cpax dot org dot uk
"Usenet is a strange place" - dmr 29 July 1999
Sig line 4 vacant - apply within

Date Sujet#  Auteur
8 Mar 25 * lun - Lucky Number44Stefan Claas
8 Mar 25 +* Re: lun - Lucky Number2Stefan Claas
8 Mar 25 i`- Re: lun - Lucky Number1Stefan Claas
8 Mar 25 `* Re: lun - Lucky Number41Rich
8 Mar 25  +* Re: lun - Lucky Number38Stefan Claas
8 Mar 25  i+* Re: lun - Lucky Number14Stefan Claas
8 Mar 25  ii+* Re: lun - Lucky Number2Richard Heathfield
8 Mar 25  iii`- Re: lun - Lucky Number1Stefan Claas
8 Mar 25  ii`* Re: lun - Lucky Number11Rich
8 Mar 25  ii `* Re: lun - Lucky Number10Richard Heathfield
9 Mar 25  ii  `* Re: lun - Lucky Number9Rich
9 Mar 25  ii   +- Re: lun - Lucky Number1Richard Heathfield
10 Mar 25  ii   +- Re: lun - Lucky Number1Chris M. Thomasson
11 Mar 25  ii   `* Re: lun - Lucky Number6Ben Bacarisse
11 Mar 25  ii    `* Re: lun - Lucky Number5Rich
11 Mar 25  ii     `* Re: lun - Lucky Number4Richard Heathfield
11 Mar 25  ii      +* Re: lun - Lucky Number2Rich
11 Mar 25  ii      i`- Re: lun - Lucky Number1Richard Harnden
11 Mar 25  ii      `- Re: lun - Lucky Number1Chris M. Thomasson
8 Mar 25  i+* Re: lun - Lucky Number19Richard Heathfield
8 Mar 25  ii`* Re: lun - Lucky Number18Stefan Claas
8 Mar 25  ii +* Re: lun - Lucky Number2Chris M. Thomasson
8 Mar 25  ii i`- Re: lun - Lucky Number1Chris M. Thomasson
9 Mar 25  ii `* Re: lun - Lucky Number15Richard Heathfield
9 Mar 25  ii  `* Re: lun - Lucky Number14Stefan Claas
9 Mar 25  ii   +* Re: lun - Lucky Number3Stefan Claas
9 Mar 25  ii   i`* Re: lun - Lucky Number2Stefan Claas
9 Mar 25  ii   i `- Re: lun - Lucky Number1Stefan Claas
12 Mar 25  ii   `* Re: lun - Lucky Number10Richard Heathfield
15 Mar 25  ii    `* Re: lun - Lucky Number9Marcel Logen
15 Mar 25  ii     `* Re: lun - Lucky Number8Richard Heathfield
16 Mar 25  ii      `* Re: lun - Lucky Number7Marcel Logen
16 Mar 25  ii       `* Re: lun - Lucky Number6Richard Heathfield
16 Mar 25  ii        `* Re: lun - Lucky Number5Marcel Logen
16 Mar 25  ii         `* Re: lun - Lucky Number4Richard Heathfield
16 Mar 25  ii          `* Re: lun - Lucky Number3Marcel Logen
17 Mar 25  ii           `* Re: lun - Lucky Number2Richard Heathfield
17 Mar 25  ii            `- Re: lun - Lucky Number1Marcel Logen
8 Mar 25  i`* Re: lun - Lucky Number4Rich
8 Mar 25  i `* Re: lun - Lucky Number3Marcel Logen
9 Mar 25  i  `* Re: lun - Lucky Number2Rich
9 Mar 25  i   `- Re: lun - Lucky Number1Marcel Logen
8 Mar 25  `* Re: lun - Lucky Number2Richard Heathfield
8 Mar 25   `- Re: lun - Lucky Number1Chris M. Thomasson

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal