Deutsch English Français Italiano |
<v94pji$m1ib$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Bart <bc@freeuk.com> Newsgroups: comp.lang.c Subject: Re: how cast works? Date: Fri, 9 Aug 2024 11:04:35 +0100 Organization: A noiseless patient Spider Lines: 41 Message-ID: <v94pji$m1ib$1@dont-email.me> References: <v8vlo9$2oc1v$1@dont-email.me> <slrnvb7kis.28a.dan@djph.net> <v929ah$3u7l7$1@dont-email.me> <87ttfu94yv.fsf@nosuchdomain.example.com> <v93a3t$6q7v$1@dont-email.me> <v93e2q$8put$1@dont-email.me> <87bk228uzg.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Fri, 09 Aug 2024 12:04:35 +0200 (CEST) Injection-Info: dont-email.me; posting-host="a5ef0e336b797e59eb82473df0f29c2d"; logging-data="722507"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/UFKEmD5qkCDvIJ0TxA0tp" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:rD4+jA8KIJuvq47ZJizCT6Npe34= Content-Language: en-GB In-Reply-To: <87bk228uzg.fsf@nosuchdomain.example.com> Bytes: 2389 On 09/08/2024 00:17, Keith Thompson wrote: > Bart <bc@freeuk.com> writes: > [...] >> Take: >> >> int a; double x; >> >> x = (double)a; >> >> The cast is implicit here but I've written it out to make it clear. > > [...] > > The *conversion* could be done implicitly, but you've used a cast (i.e., > an explicit conversion) to make it clear. > > 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 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, I don't see a problem with talking about implicit and explicit versions. It just seems to irk the pedantics here.