Velocity Reviews > (C99) Does "const int x=5;" make x a "constant expression"?

# (C99) Does "const int x=5;" make x a "constant expression"?

jaime
Guest
Posts: n/a

 06-16-2007
Hi again all.

Given the line:
const int x=5;
Can I then use "x" as a constant expression? (By "constant expression", I
mean "constant expression" as defined in the C99 standard)

I've been searching google for 2 days now trying to answer this myself,
and I'm just getting more and more confused (some things I read make me
think "yes", while some things I read make me think "no").

I have many questions I'd like to ask on this topic, but rather than bore
you all rigid with the results of all of my research (points for and
against), I thought I'd just try this short question first.

Also, could anyone answering please give me an idea of how I can infer the
9899:TC2).

So, baffled once again, I humbly seek wise words from the council of
elders...

Ta, Jaime

CBFalconer
Guest
Posts: n/a

 06-16-2007
jaime wrote:
>
> Given the line:
> const int x=5;
> Can I then use "x" as a constant expression? (By "constant
> expression", I mean "constant expression" as defined in the C99
> standard)

No. It is a constant object, not expression. I.E. it cannot be
altered.

--
<http://www.cs.auckland.ac.nz/~pgut001/pubs/vista_cost.txt>
<http://www.securityfocus.com/columnists/423>
<http://www.aaxnet.com/editor/edit043.html>
cbfalconer at maineline dot net

--
Posted via a free Usenet account from http://www.teranews.com

Joe Wright
Guest
Posts: n/a

 06-16-2007
jaime wrote:
> Hi again all.
>
> Given the line:
> const int x=5;
> Can I then use "x" as a constant expression? (By "constant expression", I
> mean "constant expression" as defined in the C99 standard)
>
> I've been searching google for 2 days now trying to answer this myself,
> and I'm just getting more and more confused (some things I read make me
> think "yes", while some things I read make me think "no").
>
> I have many questions I'd like to ask on this topic, but rather than bore
> you all rigid with the results of all of my research (points for and
> against), I thought I'd just try this short question first.
>
> Also, could anyone answering please give me an idea of how I can infer the
> answer by reading the "Standard" (which I _think_ is currently ISO/IEC
> 9899:TC2).
>
> So, baffled once again, I humbly seek wise words from the council of
> elders...
>
> Ta, Jaime

No. const != constant in C. In your example..
const int x = 5;
...x is const and 5 is constant. You can't use x where you need a constant.

--
Joe Wright
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---

Ben Bacarisse
Guest
Posts: n/a

 06-16-2007
jaime <(E-Mail Removed)> writes:

> Hi again all.
>
> Given the line:
> const int x=5;
> Can I then use "x" as a constant expression? (By "constant expression", I
> mean "constant expression" as defined in the C99 standard)

Short: no.

Medium: not if you want portable code.

Long: read all of section 6.6 of the standard. The trouble is it says
what you *can* have. The value of a variable, const, or otherwise is
not one of these.

Section 6.6 does permit implementations to allow other forms, so you
might be able to do it, but your code will not be portable. Such am
implementation would be violating the spirit in which const was
introduced (to signify a read-only, run-time object).

--
Ben.

Keith Thompson
Guest
Posts: n/a

 06-16-2007
jaime <(E-Mail Removed)> writes:
> Hi again all.
>
> Given the line:
> const int x=5;
> Can I then use "x" as a constant expression? (By "constant expression", I
> mean "constant expression" as defined in the C99 standard)
>
> I've been searching google for 2 days now trying to answer this myself,
> and I'm just getting more and more confused (some things I read make me
> think "yes", while some things I read make me think "no").

[...]

No, "const" in C really means "read-only", not "constant".

expression in C++</OT>.

--
Keith Thompson (The_Other_Keith) http://www.velocityreviews.com/forums/(E-Mail Removed) <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"