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

Discussion in 'C Programming' started by jaime, Jun 16, 2007.

  1. jaime

    jaime Guest

    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 :)
     
    jaime, Jun 16, 2007
    #1
    1. Advertising

  2. jaime

    CBFalconer Guest

    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
     
    CBFalconer, Jun 16, 2007
    #2
    1. Advertising

  3. jaime

    Joe Wright Guest

    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 ---
     
    Joe Wright, Jun 16, 2007
    #3
  4. jaime <> 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.
     
    Ben Bacarisse, Jun 16, 2007
    #4
  5. jaime <> 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".

    Your Google search probably confused you because <OT>x is a constant
    expression in C++</OT>.

    --
    Keith Thompson (The_Other_Keith) <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"
     
    Keith Thompson, Jun 16, 2007
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    3
    Views:
    3,761
    Chris Torek
    Feb 20, 2006
  2. Replies:
    13
    Views:
    13,036
    Kai-Uwe Bux
    Jan 22, 2007
  3. Replies:
    3
    Views:
    628
    Keith Thompson
    Mar 31, 2007
  4. Philipp
    Replies:
    26
    Views:
    2,444
    Ramon F Herrera
    Nov 25, 2007
  5. Adem
    Replies:
    42
    Views:
    2,881
    James Kuyper
    Nov 4, 2008
Loading...

Share This Page