By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,127 Members | 1,222 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,127 IT Pros & Developers. It's quick & easy.

Is 0 a decimal integer?

P: n/a
I say no, 0 is _not_ a decimal literal. Anybody disagree? If you do agree
with me, then what do you think it is?
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #1
Share this Question
Share on Google+
11 Replies


P: n/a
Doesn't 0 mathematically mean 0 (zero, null, nil) in decimal, binary,
hexadecimal, etc whatever number system you can devise?

Ben
Jul 23 '05 #2

P: n/a
benben wrote:
Doesn't 0 mathematically mean 0 (zero, null, nil) in decimal, binary,
hexadecimal, etc whatever number system you can devise?

Ben


I'm speaking strictly in lexical terms. How would a C++ grammarian classify
0? I believe you are correct regarding semantics.

--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #3

P: n/a
Steven T. Hatton wrote:
I say no, 0 is _not_ a decimal literal. Anybody disagree? If you do agree
with me, then what do you think it is?


A naked 0 is a octal-literal according to the C++ standard.
A decimimal literal is a single non-zero digit followed
by zero or more digits.
Jul 23 '05 #4

P: n/a
Ron Natalie wrote:
Steven T. Hatton wrote:
I say no, 0 is _not_ a decimal literal. Anybody disagree? If you do
agree with me, then what do you think it is?


A naked 0 is a octal-literal according to the C++ standard.
A decimimal literal is a single non-zero digit followed
by zero or more digits.


It's probably a completely pointless observation, but that's also how I
understood 2.13.1.
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #5

P: n/a

"Steven T. Hatton" <ch********@germania.sup> schrieb im Newsbeitrag
news:lK********************@speakeasy.net...
benben wrote:
Doesn't 0 mathematically mean 0 (zero, null, nil) in decimal, binary,
hexadecimal, etc whatever number system you can devise?

Ben
I'm speaking strictly in lexical terms. How would a C++ grammarian

classify 0? I believe you are correct regarding semantics.


You have to use a type qualifier. So it depends on you.

I think

(char) 0

would be valid as well. But I didn't check it.

Matthias
Jul 23 '05 #6

P: n/a
As much as I think this is pointless, this might solve the argument,
sort of:

std::cout << typeid(0).name();

Jul 23 '05 #7

P: n/a
Starfox wrote:
As much as I think this is pointless, this might solve the argument,
sort of:

std::cout << typeid(0).name();

Not really, because an octal integer literal will result in the creation of
a temporary of type int.
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #8

P: n/a
On Sat, 23 Jul 2005 06:38:41 -0400, "Steven T. Hatton"
<ch********@germania.sup> wrote in comp.lang.c++:
I say no, 0 is _not_ a decimal literal. Anybody disagree? If you do agree
with me, then what do you think it is?


I think you are wasting the group's time playing with silly newbie
exercises. Suppose some particular compiler gets it wrong, and parses
it as a decimal literal. How could you tell the difference?

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html
Jul 24 '05 #9

P: n/a
Jack Klein wrote:
On Sat, 23 Jul 2005 06:38:41 -0400, "Steven T. Hatton"
<ch********@germania.sup> wrote in comp.lang.c++:
I say no, 0 is _not_ a decimal literal. Anybody disagree? If you do
agree with me, then what do you think it is?


I think you are wasting the group's time playing with silly newbie
exercises. Suppose some particular compiler gets it wrong, and parses
it as a decimal literal. How could you tell the difference?


..

--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 24 '05 #10

P: n/a
I say no, 0 is _not_ a decimal literal. Anybody
disagree? If you do agree
with me, then what do you think it is?


In my opinion, naked zero must be a separate lexical token (from compilers
point of view).
If not, why is it possible to initialize pointers
by zero:

some_type* p=0;

//or something like this:

class a
{
some_type* pointer;
a(): pointer(0) {}
};

Initializing pointers by integral value is
not permitted; you cant write pointer(13).
Long time ago there existed something like
NULL, which is now depreciated in ANSI c++.
Instead of that you use 0 - so it must be
something different than any integral number
(regardless of octal, decimal, hex, etc).

O.C.

Jul 24 '05 #11

P: n/a
Tescobar wrote:
I say no, 0 is _not_ a decimal literal. Anybody
disagree? If you do agree
with me, then what do you think it is?

In my opinion, naked zero must be a separate lexical token (from compilers
point of view).


It is not. It is an octal integer literal. If not, why is it possible to initialize pointers
by zero:

some_type* p=0;


Because the standard says that a null pointer constant is
a constant integer expression evaluating to zero. It doesn't
have to the 0 token. It can be any constant integer expression
with value zero:

some_type* p = 3-3;

is perfectly valid.
Jul 24 '05 #12

This discussion thread is closed

Replies have been disabled for this discussion.