Why do I get a compiler error, when applying the increment operator to a constant variable










1














If I declare a constant variable



int const n=100; cout<<n+1<<endl;


The console shows the value as 101



but when I write a code like this:



int const n=100;
n++;
cout<<n<<endl;


There is a compile time error:




main.cpp: In function 'int main()':
main.cpp:6:5: error: increment of read-only variable 'n'



Is the second case different from the first case?










share|improve this question



















  • 1




    Why did you declare it constant if you were planning to change it?
    – Ayxan
    Nov 10 '18 at 13:24










  • The exact error message should be given.
    – ederag
    Nov 10 '18 at 13:28










  • @ederag It's pretty obvious what the exact error message would be in case of trying to increment a constant variable. OP asks for the difference of incrementing and creation of temporary values like n+1.
    – πάντα ῥεῖ
    Nov 10 '18 at 13:32











  • @πάνταῥεῖ Sure. Just recalling good practices for a new user. Having the exact message makes the question easily reachable by searching for the error message. Remember that SO is not a forum. Good questions are useful not only to the original poster.
    – ederag
    Nov 10 '18 at 13:40










  • @ederag Satisfied now?
    – πάντα ῥεῖ
    Nov 10 '18 at 13:46















1














If I declare a constant variable



int const n=100; cout<<n+1<<endl;


The console shows the value as 101



but when I write a code like this:



int const n=100;
n++;
cout<<n<<endl;


There is a compile time error:




main.cpp: In function 'int main()':
main.cpp:6:5: error: increment of read-only variable 'n'



Is the second case different from the first case?










share|improve this question



















  • 1




    Why did you declare it constant if you were planning to change it?
    – Ayxan
    Nov 10 '18 at 13:24










  • The exact error message should be given.
    – ederag
    Nov 10 '18 at 13:28










  • @ederag It's pretty obvious what the exact error message would be in case of trying to increment a constant variable. OP asks for the difference of incrementing and creation of temporary values like n+1.
    – πάντα ῥεῖ
    Nov 10 '18 at 13:32











  • @πάνταῥεῖ Sure. Just recalling good practices for a new user. Having the exact message makes the question easily reachable by searching for the error message. Remember that SO is not a forum. Good questions are useful not only to the original poster.
    – ederag
    Nov 10 '18 at 13:40










  • @ederag Satisfied now?
    – πάντα ῥεῖ
    Nov 10 '18 at 13:46













1












1








1







If I declare a constant variable



int const n=100; cout<<n+1<<endl;


The console shows the value as 101



but when I write a code like this:



int const n=100;
n++;
cout<<n<<endl;


There is a compile time error:




main.cpp: In function 'int main()':
main.cpp:6:5: error: increment of read-only variable 'n'



Is the second case different from the first case?










share|improve this question















If I declare a constant variable



int const n=100; cout<<n+1<<endl;


The console shows the value as 101



but when I write a code like this:



int const n=100;
n++;
cout<<n<<endl;


There is a compile time error:




main.cpp: In function 'int main()':
main.cpp:6:5: error: increment of read-only variable 'n'



Is the second case different from the first case?







c++






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 10 '18 at 13:45









πάντα ῥεῖ

72.1k973136




72.1k973136










asked Nov 10 '18 at 13:12









Mudit Sharma

142




142







  • 1




    Why did you declare it constant if you were planning to change it?
    – Ayxan
    Nov 10 '18 at 13:24










  • The exact error message should be given.
    – ederag
    Nov 10 '18 at 13:28










  • @ederag It's pretty obvious what the exact error message would be in case of trying to increment a constant variable. OP asks for the difference of incrementing and creation of temporary values like n+1.
    – πάντα ῥεῖ
    Nov 10 '18 at 13:32











  • @πάνταῥεῖ Sure. Just recalling good practices for a new user. Having the exact message makes the question easily reachable by searching for the error message. Remember that SO is not a forum. Good questions are useful not only to the original poster.
    – ederag
    Nov 10 '18 at 13:40










  • @ederag Satisfied now?
    – πάντα ῥεῖ
    Nov 10 '18 at 13:46












  • 1




    Why did you declare it constant if you were planning to change it?
    – Ayxan
    Nov 10 '18 at 13:24










  • The exact error message should be given.
    – ederag
    Nov 10 '18 at 13:28










  • @ederag It's pretty obvious what the exact error message would be in case of trying to increment a constant variable. OP asks for the difference of incrementing and creation of temporary values like n+1.
    – πάντα ῥεῖ
    Nov 10 '18 at 13:32











  • @πάνταῥεῖ Sure. Just recalling good practices for a new user. Having the exact message makes the question easily reachable by searching for the error message. Remember that SO is not a forum. Good questions are useful not only to the original poster.
    – ederag
    Nov 10 '18 at 13:40










  • @ederag Satisfied now?
    – πάντα ῥεῖ
    Nov 10 '18 at 13:46







1




1




Why did you declare it constant if you were planning to change it?
– Ayxan
Nov 10 '18 at 13:24




Why did you declare it constant if you were planning to change it?
– Ayxan
Nov 10 '18 at 13:24












The exact error message should be given.
– ederag
Nov 10 '18 at 13:28




The exact error message should be given.
– ederag
Nov 10 '18 at 13:28












@ederag It's pretty obvious what the exact error message would be in case of trying to increment a constant variable. OP asks for the difference of incrementing and creation of temporary values like n+1.
– πάντα ῥεῖ
Nov 10 '18 at 13:32





@ederag It's pretty obvious what the exact error message would be in case of trying to increment a constant variable. OP asks for the difference of incrementing and creation of temporary values like n+1.
– πάντα ῥεῖ
Nov 10 '18 at 13:32













@πάνταῥεῖ Sure. Just recalling good practices for a new user. Having the exact message makes the question easily reachable by searching for the error message. Remember that SO is not a forum. Good questions are useful not only to the original poster.
– ederag
Nov 10 '18 at 13:40




@πάνταῥεῖ Sure. Just recalling good practices for a new user. Having the exact message makes the question easily reachable by searching for the error message. Remember that SO is not a forum. Good questions are useful not only to the original poster.
– ederag
Nov 10 '18 at 13:40












@ederag Satisfied now?
– πάντα ῥεῖ
Nov 10 '18 at 13:46




@ederag Satisfied now?
– πάντα ῥεῖ
Nov 10 '18 at 13:46












2 Answers
2






active

oldest

votes


















2















Is the second case different from the first case?




Yes they are fundamentally different.



int const n=100; 
n++;


The increment operator obviously cannot applied for a const(ant) variable, because the const keyword prevents it to be changed after the initial definition. That's why the compiler error is issued.



In the other case, the variable itself isn't changed, but another temporary value is created when it's passed to the operator<<() of std::cout.






share|improve this answer






























    1














    In the first case the compiler is asked to compute the output of adding a constant to an integer. This causes no error.



    In the second case, the compiler is asked to change the value of a constant. This is illegal and results in a compiler error.






    share|improve this answer




















      Your Answer






      StackExchange.ifUsing("editor", function ()
      StackExchange.using("externalEditor", function ()
      StackExchange.using("snippets", function ()
      StackExchange.snippets.init();
      );
      );
      , "code-snippets");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "1"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239287%2fwhy-do-i-get-a-compiler-error-when-applying-the-increment-operator-to-a-constan%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      2















      Is the second case different from the first case?




      Yes they are fundamentally different.



      int const n=100; 
      n++;


      The increment operator obviously cannot applied for a const(ant) variable, because the const keyword prevents it to be changed after the initial definition. That's why the compiler error is issued.



      In the other case, the variable itself isn't changed, but another temporary value is created when it's passed to the operator<<() of std::cout.






      share|improve this answer



























        2















        Is the second case different from the first case?




        Yes they are fundamentally different.



        int const n=100; 
        n++;


        The increment operator obviously cannot applied for a const(ant) variable, because the const keyword prevents it to be changed after the initial definition. That's why the compiler error is issued.



        In the other case, the variable itself isn't changed, but another temporary value is created when it's passed to the operator<<() of std::cout.






        share|improve this answer

























          2












          2








          2







          Is the second case different from the first case?




          Yes they are fundamentally different.



          int const n=100; 
          n++;


          The increment operator obviously cannot applied for a const(ant) variable, because the const keyword prevents it to be changed after the initial definition. That's why the compiler error is issued.



          In the other case, the variable itself isn't changed, but another temporary value is created when it's passed to the operator<<() of std::cout.






          share|improve this answer















          Is the second case different from the first case?




          Yes they are fundamentally different.



          int const n=100; 
          n++;


          The increment operator obviously cannot applied for a const(ant) variable, because the const keyword prevents it to be changed after the initial definition. That's why the compiler error is issued.



          In the other case, the variable itself isn't changed, but another temporary value is created when it's passed to the operator<<() of std::cout.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 10 '18 at 13:39

























          answered Nov 10 '18 at 13:20









          πάντα ῥεῖ

          72.1k973136




          72.1k973136























              1














              In the first case the compiler is asked to compute the output of adding a constant to an integer. This causes no error.



              In the second case, the compiler is asked to change the value of a constant. This is illegal and results in a compiler error.






              share|improve this answer

























                1














                In the first case the compiler is asked to compute the output of adding a constant to an integer. This causes no error.



                In the second case, the compiler is asked to change the value of a constant. This is illegal and results in a compiler error.






                share|improve this answer























                  1












                  1








                  1






                  In the first case the compiler is asked to compute the output of adding a constant to an integer. This causes no error.



                  In the second case, the compiler is asked to change the value of a constant. This is illegal and results in a compiler error.






                  share|improve this answer












                  In the first case the compiler is asked to compute the output of adding a constant to an integer. This causes no error.



                  In the second case, the compiler is asked to change the value of a constant. This is illegal and results in a compiler error.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 10 '18 at 13:18









                  John Murray

                  809514




                  809514



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239287%2fwhy-do-i-get-a-compiler-error-when-applying-the-increment-operator-to-a-constan%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                      Crossroads (UK TV series)

                      ữḛḳṊẴ ẋ,Ẩṙ,ỹḛẪẠứụỿṞṦ,Ṉẍừ,ứ Ị,Ḵ,ṏ ṇỪḎḰṰọửḊ ṾḨḮữẑỶṑỗḮṣṉẃ Ữẩụ,ṓ,ḹẕḪḫỞṿḭ ỒṱṨẁṋṜ ḅẈ ṉ ứṀḱṑỒḵ,ḏ,ḊḖỹẊ Ẻḷổ,ṥ ẔḲẪụḣể Ṱ ḭỏựẶ Ồ Ṩ,ẂḿṡḾồ ỗṗṡịṞẤḵṽẃ ṸḒẄẘ,ủẞẵṦṟầṓế