Path: csiph.com!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse Newsgroups: comp.programming Subject: Re: Here is why C++ and C are bad... Date: Wed, 30 Dec 2015 20:01:21 +0000 Organization: A noiseless patient Spider Lines: 31 Message-ID: <87r3i366zy.fsf@bsb.me.uk> References: <87bn977v7v.fsf@bsb.me.uk> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="017616aa25f81ec581c44d76d61ba2f3"; logging-data="24712"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/zVaIA+MzN6ORUrtLLKR2NeFs3nhUVlDE=" Cancel-Lock: sha1:gdxN1ODi0rAQ80pLWI1tjOKs6s4= sha1:6Voa5bcF1L5UjQnWQ5qa+9D2IqE= X-BSB-Auth: 1.4feffaf4c70719b0bd7d.20151230200121GMT.87r3i366zy.fsf@bsb.me.uk Xref: csiph.com comp.programming:6104 David Brown writes: > On 30/12/15 17:32, Ben Bacarisse wrote: >> David Brown writes: >> >>> On 30/12/15 14:28, Richard Heathfield wrote: >> >>>> int i = -6; >>>> unsigned int j = 42; >>>> if(i < j) >>>> { >>>> puts("-6 is less than 42"); >>>> } >> >>> Of course, this in itself is just a specialist case of the difference >>> between "normal" mathematics and numbers in C. Replace the first two >>> lines with "int16_t i = 1000000; int16_t j = 4000000;" and you'll find >>> that four million is apparently smaller than one million. >> >> You might find that, but you also might not! There is a conversion >> which is implementation-defined (and might even raise a signal). >> > > Absolutely - which is why you always have to be careful with arithmetic > in C. I'd just say "you have to be careful in C". There's no arithmetic (in the way I'd want to use the word) in "int16_t i = 1000000;". -- Ben.