Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #91579

Re: unsigned int

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>

Show all headers | View raw


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


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