Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Sep 2016 22:10:24 +0200
From:      Cedric Blancher <cedric.blancher@gmail.com>
To:        twilight <pipfstarrd@openmailbox.org>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: What is the point in expression: !!var ?
Message-ID:  <CALXu0UcLaNgEyd_SLxSRDMDv6kjsDKpPDRc%2BHHJfyAv-YAmYkQ@mail.gmail.com>
In-Reply-To: <7bf5cd37-6436-8cec-74e3-f0856bcc807c@openmailbox.org>
References:  <7bf5cd37-6436-8cec-74e3-f0856bcc807c@openmailbox.org>

next in thread | previous in thread | raw e-mail | index | archive | help
The point is to transform the value of a (any kind, like pointer) to a
Boolean value.

Ancient C trick, goes back to dmr

Ced

On 13 September 2016 at 21:54, twilight <pipfstarrd@openmailbox.org> wrote:
> Hello,
>
> I'm digging through FreeBSD cppcheck scan report with hope to catch some
> bugs.
>
> I've came along a line:
>         c = cond(token, val, yylex(), noeval | !!a);
>
> What's the point in using !! twice? Can it be deleted?
> Here is the context:
>
> static arith_t cond(int token, union yystype *val, int op, int noeval)
> {
>         arith_t a = or(token, val, op, noeval);
>         arith_t b;
>         arith_t c;
>
>         if (last_token != ARITH_QMARK)
>                 return a;
>
>         b = assignment(yylex(), noeval | !a);
>
>         if (last_token != ARITH_COLON)
>                 yyerror("expecting ':'");
>
>         token = yylex();
>         *val = yylval;
>
>         c = cond(token, val, yylex(), noeval | !!a);
>
>         return a ? b : c;
> }
>
>
> --
> Cheers~
>
> PGP key fingerprint:
> 07B3 2177 3E27 BF41 DC65  CC95 BDA8 88F1 E9F9 CEEF
>
> You can retrieve my public key at pgp.mit.edu.
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"



-- 
Cedric Blancher <cedric.blancher@gmail.com>
[https://plus.google.com/u/0/+CedricBlancher/]
Institute Pasteur



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALXu0UcLaNgEyd_SLxSRDMDv6kjsDKpPDRc%2BHHJfyAv-YAmYkQ>