boolean datatype
rgh%inmet.uucp at BRL.Arpa
rgh%inmet.uucp at BRL.Arpa
Wed Jun 11 10:46:46 AEST 1986
Return-Path: <info-c-request at BRL.ARPA>
Redistributed: Xerox-Info-C^.x at XEROX.ARPA
Received: from BRL-AOS.ARPA by Xerox.COM ; 02 JUN 86 16:42:38 PDT
Received: from brl-smoke.arpa by AOS.BRL.ARPA id a015997; 2 Jun 86 17:28 EDT
Received: from USENET by SMOKE.BRL.ARPA id a005687; 2 Jun 86 17:01 EDT
Newsgroups: net.lang.c
Message-ID: <393 at peregrine.UUCP>
This is not a proposal to change the ANSI standard. This is just some
ideas some possible ways of improving C.
>Re: builtin bool type
>>I'm not sure why not. Assuming all the implicit int/bool conversions stay,
>>I think the only problems are (a) it isn't really necessary, and (b) it adds
>>a new reserved word (breaking any programs that use "typedef int bool"!).
>
>(a) is the biggie. Why add bool when "typedef enum { FALSE, TRUE } bool;"
>works fine? (Relying on ANSI C's treatment of enums as real ints)
So that the built in statements can use them.
...
int n,get_number();
n=7;
if (n=get_number()) printf("got 7\n"); /* should have been == */
...
This is an example of a place where a C compiler with boolean types would catch
a mistake.
...
bool flag,get_yes_or_no();
if (flag=get_yes_or_no()) printf("got yes\n"); /* no mistake */
...
This is an exmaple of a place where most of the idea for finding mistaken
assignments would fail.
One possible way to put this in C would be to do the conversion from
int to bool(if the integer is not equal to zero then make it true else
make it false) and generate a warning. This would add a new reserved
word and would break programs that used bool as an identifier. At
some future time the warning could become an error message.
Another feature I would like to have is a range data type. I don't
know of a good syntax for putting this in C but it would be nice to
use in programs where are know the possible values of a number but
would like the compiler to figure out an efficient sized slot to put
it in.
...
range hour:1..12; /* create a variable named hour that can vary from */
/* 1 through 12 */
typedef range DAY:1..366;
DAY day1,day2;
hour+=2;
day1=day2+100;
}
I will let other people argue about how to index an array by a range.
--
Mike Wexler
Email address:(trwrb|scgvaxd)!felix!peregrine!mike
Tel Co. address: (714)855-3923
;-) Internet address: ucivax at ucbvax.BERKELY.EDU!ucivax%felix!mike at peregrine :-(
More information about the Comp.lang.c
mailing list