Sujet : Re: how cast works?
De : jameskuyper (at) *nospam* alumni.caltech.edu (James Kuyper)
Groupes : comp.lang.cDate : 09. Aug 2024, 18:57:59
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v95lb7$26koh$1@dont-email.me>
References : 1 2 3 4 5 6 7 8
User-Agent : Mozilla Thunderbird
On 09/08/2024 12:04, Bart wrote:
On 09/08/2024 00:17, Keith Thompson wrote:
...
There is no such thing as an "implicit cast" in C.
>
Suppose I write this code:
x = a; // implicit 'conversion'
x = (double)a; // explicit 'conversion'
My compiler produces these two bits of AST for the RHS of both expressions:
1 00009 r64---|---2 convert: sfloat_c i32 => r64
1 00009 i32---|---|---1 name: t.main.a.1
1 00010 r64---|---2 convert: sfloat_c i32 => r64
1 00010 i32---|---|---1 name: t.main.a.1
Of course - an implicit conversion has exactly the same effect as a
explicit conversion, if the source and destination types are the same.
That doesn't make it correct to use the term "cast" to describe anything
other than an explicit conversion.
So whatever you call that `(double)` part of the second line, which is
written explicitly, exactly the same thing is done internally (ie
'implicitly') to the first line. (The 09/10 are line numbers.)
Since C likes to use the term 'cast' for such conversions, ...
No, C only uses the term "cast" to describe the following:
"6.5.4 Cast operators
1 cast-expression:
unary-expression
( type-name ) cast-expression" (6.5.4p1)
A cast is a piece of syntax that is used to explicitly request that a
conversion be performed. Conversions that are explicitly requested in C
code are referred to as casts only by people who don't understand what
they're saying - the standard never refers to them as such.
... I don't see a
problem with talking about implicit and explicit versions.
There's nothing wrong with talking about implicit conversions versus
explicit conversions. Explicit conversion are also called casts.