Nested for-loop: giving concatenated result












1















I am currently finding it hard to grasp the output from a simple nested for-loop



int result = 0;

for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);


Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?



Can someone explain please?










share|improve this question

























  • Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.

    – Anthony Pegram
    Jun 10 '18 at 7:53











  • 0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..

    – ArgusMagnus
    Jun 10 '18 at 7:55
















1















I am currently finding it hard to grasp the output from a simple nested for-loop



int result = 0;

for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);


Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?



Can someone explain please?










share|improve this question

























  • Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.

    – Anthony Pegram
    Jun 10 '18 at 7:53











  • 0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..

    – ArgusMagnus
    Jun 10 '18 at 7:55














1












1








1








I am currently finding it hard to grasp the output from a simple nested for-loop



int result = 0;

for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);


Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?



Can someone explain please?










share|improve this question
















I am currently finding it hard to grasp the output from a simple nested for-loop



int result = 0;

for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);


Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?



Can someone explain please?







c#






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 '18 at 6:37









Cœur

17.8k9106145




17.8k9106145










asked Jun 10 '18 at 7:50









NZ_DJNZ_DJ

12010




12010













  • Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.

    – Anthony Pegram
    Jun 10 '18 at 7:53











  • 0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..

    – ArgusMagnus
    Jun 10 '18 at 7:55



















  • Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.

    – Anthony Pegram
    Jun 10 '18 at 7:53











  • 0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..

    – ArgusMagnus
    Jun 10 '18 at 7:55

















Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.

– Anthony Pegram
Jun 10 '18 at 7:53





Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.

– Anthony Pegram
Jun 10 '18 at 7:53













0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..

– ArgusMagnus
Jun 10 '18 at 7:55





0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..

– ArgusMagnus
Jun 10 '18 at 7:55












3 Answers
3






active

oldest

votes


















2














Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:



for (int j = 1; j <= 2; j++)
{
result = result +i;
}


Given that the body of the loop doesn't depend on j, and the inner loop will always run twice, we can replace the whole of the inner loop with:



result = result + i;
result = result + i;


Or to simplify it:



result = result + (i * 2);


So now the whole code is equivalent to:



int result = 0;

for (int i = 1; i <= 3; i++)
{
result = result + (i * 2);
}
Console.WriteLine(result);


So after the first iteration of the outer loop, result is 2 (we've added 2 to 0).



After the second iteration of the outer loop, result is 6 (we've added 4 to 2).



After the third iteration of the outer loop, result is 12 (we've added 6 to 6).






share|improve this answer
























  • Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!

    – NZ_DJ
    Jun 10 '18 at 7:58



















2














You are adding the value of i to result each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1 twice, the second time the inner loop runs you add 2 twice, and the final time it runs you add 3 twice:



result = 1 + 1 + 2 + 2 + 3 + 3 = 12





share|improve this answer































    1














    run that test and you will see:



    class Program
    {
    public static void test()
    {
    int result = 0;

    for (int i = 1; i <= 3; i++)
    {
    Console.WriteLine("i["+i+"] : ");
    for (int j = 1; j <= 2; j++)
    {
    Console.Write(" when : j["+j+"]");
    Console.WriteLine("Adding " + i + "to" + result);
    result = result + i;
    }
    }
    Console.WriteLine(result);
    Console.ReadLine();
    }

    static void Main(string args)
    {
    test();
    }
    }





    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%2f50781613%2fnested-for-loop-giving-concatenated-result%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      2














      Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:



      for (int j = 1; j <= 2; j++)
      {
      result = result +i;
      }


      Given that the body of the loop doesn't depend on j, and the inner loop will always run twice, we can replace the whole of the inner loop with:



      result = result + i;
      result = result + i;


      Or to simplify it:



      result = result + (i * 2);


      So now the whole code is equivalent to:



      int result = 0;

      for (int i = 1; i <= 3; i++)
      {
      result = result + (i * 2);
      }
      Console.WriteLine(result);


      So after the first iteration of the outer loop, result is 2 (we've added 2 to 0).



      After the second iteration of the outer loop, result is 6 (we've added 4 to 2).



      After the third iteration of the outer loop, result is 12 (we've added 6 to 6).






      share|improve this answer
























      • Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!

        – NZ_DJ
        Jun 10 '18 at 7:58
















      2














      Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:



      for (int j = 1; j <= 2; j++)
      {
      result = result +i;
      }


      Given that the body of the loop doesn't depend on j, and the inner loop will always run twice, we can replace the whole of the inner loop with:



      result = result + i;
      result = result + i;


      Or to simplify it:



      result = result + (i * 2);


      So now the whole code is equivalent to:



      int result = 0;

      for (int i = 1; i <= 3; i++)
      {
      result = result + (i * 2);
      }
      Console.WriteLine(result);


      So after the first iteration of the outer loop, result is 2 (we've added 2 to 0).



      After the second iteration of the outer loop, result is 6 (we've added 4 to 2).



      After the third iteration of the outer loop, result is 12 (we've added 6 to 6).






      share|improve this answer
























      • Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!

        – NZ_DJ
        Jun 10 '18 at 7:58














      2












      2








      2







      Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:



      for (int j = 1; j <= 2; j++)
      {
      result = result +i;
      }


      Given that the body of the loop doesn't depend on j, and the inner loop will always run twice, we can replace the whole of the inner loop with:



      result = result + i;
      result = result + i;


      Or to simplify it:



      result = result + (i * 2);


      So now the whole code is equivalent to:



      int result = 0;

      for (int i = 1; i <= 3; i++)
      {
      result = result + (i * 2);
      }
      Console.WriteLine(result);


      So after the first iteration of the outer loop, result is 2 (we've added 2 to 0).



      After the second iteration of the outer loop, result is 6 (we've added 4 to 2).



      After the third iteration of the outer loop, result is 12 (we've added 6 to 6).






      share|improve this answer













      Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:



      for (int j = 1; j <= 2; j++)
      {
      result = result +i;
      }


      Given that the body of the loop doesn't depend on j, and the inner loop will always run twice, we can replace the whole of the inner loop with:



      result = result + i;
      result = result + i;


      Or to simplify it:



      result = result + (i * 2);


      So now the whole code is equivalent to:



      int result = 0;

      for (int i = 1; i <= 3; i++)
      {
      result = result + (i * 2);
      }
      Console.WriteLine(result);


      So after the first iteration of the outer loop, result is 2 (we've added 2 to 0).



      After the second iteration of the outer loop, result is 6 (we've added 4 to 2).



      After the third iteration of the outer loop, result is 12 (we've added 6 to 6).







      share|improve this answer












      share|improve this answer



      share|improve this answer










      answered Jun 10 '18 at 7:54









      Jon SkeetJon Skeet

      1083k68279098417




      1083k68279098417













      • Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!

        – NZ_DJ
        Jun 10 '18 at 7:58



















      • Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!

        – NZ_DJ
        Jun 10 '18 at 7:58

















      Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!

      – NZ_DJ
      Jun 10 '18 at 7:58





      Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!

      – NZ_DJ
      Jun 10 '18 at 7:58













      2














      You are adding the value of i to result each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1 twice, the second time the inner loop runs you add 2 twice, and the final time it runs you add 3 twice:



      result = 1 + 1 + 2 + 2 + 3 + 3 = 12





      share|improve this answer




























        2














        You are adding the value of i to result each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1 twice, the second time the inner loop runs you add 2 twice, and the final time it runs you add 3 twice:



        result = 1 + 1 + 2 + 2 + 3 + 3 = 12





        share|improve this answer


























          2












          2








          2







          You are adding the value of i to result each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1 twice, the second time the inner loop runs you add 2 twice, and the final time it runs you add 3 twice:



          result = 1 + 1 + 2 + 2 + 3 + 3 = 12





          share|improve this answer













          You are adding the value of i to result each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1 twice, the second time the inner loop runs you add 2 twice, and the final time it runs you add 3 twice:



          result = 1 + 1 + 2 + 2 + 3 + 3 = 12






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jun 10 '18 at 7:53









          IridiumIridium

          17.3k34056




          17.3k34056























              1














              run that test and you will see:



              class Program
              {
              public static void test()
              {
              int result = 0;

              for (int i = 1; i <= 3; i++)
              {
              Console.WriteLine("i["+i+"] : ");
              for (int j = 1; j <= 2; j++)
              {
              Console.Write(" when : j["+j+"]");
              Console.WriteLine("Adding " + i + "to" + result);
              result = result + i;
              }
              }
              Console.WriteLine(result);
              Console.ReadLine();
              }

              static void Main(string args)
              {
              test();
              }
              }





              share|improve this answer




























                1














                run that test and you will see:



                class Program
                {
                public static void test()
                {
                int result = 0;

                for (int i = 1; i <= 3; i++)
                {
                Console.WriteLine("i["+i+"] : ");
                for (int j = 1; j <= 2; j++)
                {
                Console.Write(" when : j["+j+"]");
                Console.WriteLine("Adding " + i + "to" + result);
                result = result + i;
                }
                }
                Console.WriteLine(result);
                Console.ReadLine();
                }

                static void Main(string args)
                {
                test();
                }
                }





                share|improve this answer


























                  1












                  1








                  1







                  run that test and you will see:



                  class Program
                  {
                  public static void test()
                  {
                  int result = 0;

                  for (int i = 1; i <= 3; i++)
                  {
                  Console.WriteLine("i["+i+"] : ");
                  for (int j = 1; j <= 2; j++)
                  {
                  Console.Write(" when : j["+j+"]");
                  Console.WriteLine("Adding " + i + "to" + result);
                  result = result + i;
                  }
                  }
                  Console.WriteLine(result);
                  Console.ReadLine();
                  }

                  static void Main(string args)
                  {
                  test();
                  }
                  }





                  share|improve this answer













                  run that test and you will see:



                  class Program
                  {
                  public static void test()
                  {
                  int result = 0;

                  for (int i = 1; i <= 3; i++)
                  {
                  Console.WriteLine("i["+i+"] : ");
                  for (int j = 1; j <= 2; j++)
                  {
                  Console.Write(" when : j["+j+"]");
                  Console.WriteLine("Adding " + i + "to" + result);
                  result = result + i;
                  }
                  }
                  Console.WriteLine(result);
                  Console.ReadLine();
                  }

                  static void Main(string args)
                  {
                  test();
                  }
                  }






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jun 10 '18 at 8:03









                  Leon BarkanLeon Barkan

                  2,04321129




                  2,04321129






























                      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.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50781613%2fnested-for-loop-giving-concatenated-result%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

                      Guess what letter conforming each word

                      Port of Spain

                      Run scheduled task as local user group (not BUILTIN)