From 6337799738683009781
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f78e5,9d68dbac9de416ac
X-Google-Attributes: gidf78e5,public
X-Google-ArrivalTime: 1991-06-18 14:41:31 PST
Path: gmdzi!unido!mcsun!uunet!stanford.edu!agate!forney.berkeley.edu!jbuck
From: jbuck@forney.berkeley.edu (Joe Buck)
Newsgroups: comp.std.c++
Subject: Re: Non-Portable pointer assignment?
Keywords: 'a' and 'ab'
Message-ID: <1991Jun18.173559.4873@agate.berkeley.edu>
Date: 18 Jun 91 17:35:59 GMT
References: <17163@darkstar.ucsc.edu>
Sender: usenet@agate.berkeley.edu (USENET Administrator)
Reply-To: jbuck@forney.berkeley.edu (Joe Buck)
Organization: University of California, Berkeley
Lines: 35


Tony Hansen writes:
|> .C++ has taken this tack: the type of 'x' is char while the type of 'xy' is
|> .int. It gives very nice properties when dealing with function and operator
|> .overloading.

In article <17163@darkstar.ucsc.edu>, daniel@cis.ucsc.edu (Daniel Edelson) writes:
|> Thank you for pointing this out. 
|> This means that the following program is legal in C++ and
|> ANSI C, and has different meanings in the two languages.
|> Am I correct in thinking that a design goal of Bjarne's was
|> to avoid the possibility of such a program? 

No, you aren't.  There are a number of deliberate differences.
The win from being able to say

	int foo;
	cout << "The answer is " << foo << '\n';

far exceeds the rare cases where a different answer is obtained
in C and C++.  You can still pass 'a' to a routine that expects
an int and have the right thing happen.

|> int main(void)
|> {
|> 	printf("%d\n", sizeof('a'));
|> }

But can you show me a real production program that produces
different answers?  People very rarely write sizeof('a').


--
Joe Buck
jbuck@galileo.berkeley.edu	 {uunet,ucbvax}!galileo.berkeley.edu!jbuck	


