Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Keith Thompson <kst-u@mib.org> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: unsigned int |
| Date | 2016-08-02 11:38 -0700 |
| Organization | None to speak of |
| Message-ID | <lninvj2ez0.fsf@kst-u.example.com> (permalink) |
| References | (7 earlier) <nnol7a$fk6$1@dont-email.me> <nnpl0b$p7u$1@dont-email.me> <nnqaph$ho$1@dont-email.me> <nnqd6i$92c$1@dont-email.me> <nnqj06$u15$1@dont-email.me> |
Les Cargill <lcargill99@comcast.com> writes:
> David Brown wrote:
>> On 02/08/16 16:35, Les Cargill wrote:
>>> David Brown wrote:
>>>> On 02/08/16 01:20, Les Cargill wrote:
>>>>> Ben Bacarisse wrote:
>>>>>> Les Cargill <lcargill99@comcast.com> writes:
>> <snip>
>>>>> While it's implementation dependent, it's unusual for "unsigned" to be
>>>>> the actual default - unless overridden.
>>>>
>>>> I think that is a wild generalisation, without basis in fact - unless
>>>> you can point us to a list of compilers, targets, and the signedness of
>>>> their chars.
>>>
>>> Hence "unless overridden". The defacto, default standards for the 'C'
>>> language are "char is a smaller int" and "ints are signed by default."
>>>
>>> The Standard obviously doesn't say one way or the other. But the
>>> historical critical mass of the language is towards the way I say.
>>
>> There is /no/ standard here - defacto, default, or otherwise.
David: There is of course a language standard, and it's quite clear.
You're talking about a specific thing that the standard doesn't say.
Specifically, the standard discusses the signedness of char, and says
that the implementation defines it, but does not specify a "default" of
any kind.
> I simply have to disagree. The default 'C' int declaration is signed
> unless it's explicitly made unsigned.
Of course it is. And this is not a "default". Type `int` is a signed
integer type.
> That people choose to override that default is neither here nor there.
> It's baked into the declaration syntax of the language.
I wouldn't say it's baked into the declaration syntax. Syntactically,
there are three ways to refer to an integer type of the same rank as
`int`:
int
signed int
unsigned int
(Actually the keywords can be in either order, but we'll ignore
that.) The *syntax* says nothing about the signedness of type `int`,
or about its relationship to `signed int` and to `unsigned int`.
The *semantics* of the language specify that `int` and `signed int`
refer to the same type. (Except perhaps in the case of bit fields;
it's implementation-defined whether an `int` bit field is signed
or unsigned, but a `signed int` bit field is assuredly signed.)
The standard is equally clear that there are three ways to refer to an
integer type with the same rank as `char`:
char
signed char
unsigned char
But the semantic rules are different. N1570 6.2.5p15:
The three types char, signed char, and unsigned char are
collectively called the *character types*. The implementation
shall define char to have the same range, representation,
and behavior as either signed char or unsigned char.
Where did you get from that the idea that there's some kind of "default"
for the signedness of `char`? How is saying that plain char is signed
by default either correct or useful?
The rules for the "char" types (char, signed char, and unsigned char)
differ from the rules for the "int" types (int and unsigned int). You
cannot reasonably apply the rules for int and signed int to char, signed
char, and unsigned char.
--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: unsigned int "Osmium" <r124c4u102@comcast.net> - 2016-07-31 12:40 -0500
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-01 11:01 +0200
Re: unsigned int James Kuyper <jameskuyper@verizon.net> - 2016-08-01 10:15 -0400
Re: unsigned int Les Cargill <lcargill99@comcast.com> - 2016-08-01 09:59 -0500
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-01 17:21 +0200
Re: unsigned int Keith Thompson <kst-u@mib.org> - 2016-08-01 09:55 -0700
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-01 22:42 +0200
Re: unsigned int supercat@casperkitty.com - 2016-08-01 14:18 -0700
Re: unsigned int Les Cargill <lcargill99@comcast.com> - 2016-08-01 13:11 -0500
Re: unsigned int Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-08-01 19:46 +0100
Re: unsigned int Les Cargill <lcargill99@comcast.com> - 2016-08-01 18:20 -0500
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-02 10:18 +0200
Re: unsigned int Les Cargill <lcargill99@comcast.com> - 2016-08-02 09:35 -0500
Re: unsigned int Keith Thompson <kst-u@mib.org> - 2016-08-02 08:00 -0700
Re: unsigned int Les Cargill <lcargill99@comcast.com> - 2016-08-02 11:12 -0500
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-02 17:11 +0200
Re: unsigned int Les Cargill <lcargill99@comcast.com> - 2016-08-02 11:55 -0500
Re: unsigned int supercat@casperkitty.com - 2016-08-02 10:16 -0700
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-03 14:02 +0200
Re: unsigned int Keith Thompson <kst-u@mib.org> - 2016-08-03 08:58 -0700
Re: unsigned int James Kuyper <jameskuyper@verizon.net> - 2016-08-02 13:57 -0400
Re: unsigned int Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-08-02 19:30 +0100
Re: unsigned int Keith Thompson <kst-u@mib.org> - 2016-08-02 11:38 -0700
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-03 14:12 +0200
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-03 13:45 +0200
Re: unsigned int Keith Thompson <kst-u@mib.org> - 2016-08-01 12:02 -0700
Re: unsigned int David Brown <david.brown@hesbynett.no> - 2016-08-01 23:01 +0200
csiph-web