CrazyEngineers
  • #include

      int main()

      {

       int i;

      

      for(i=0;i<5;i++)

      {

       int i=10;

        printf("%d",i);

       }

    return 0;

      }

    why this program prints 10 ,..5 times...the value of i will be changed after a single time operation, in for loop.....?

    Replies
Howdy guest!
Dear guest, you must be logged-in to participate on CrazyEngineers. We would love to have you as a member of our community. Consider creating an account or login.
Replies
  • Kaustubh Katdare

    AdministratorSep 20, 2018

    Inside the loop, you are setting i = 10 and then printing it - 5 times. You'll have to not set i = 10 inside the loop. 

    Are you sure? This action cannot be undone.
    Cancel
  • Shaswat Kumar

    MemberSep 20, 2018

    this program prints 10..5 times in this situation also


    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorSep 21, 2018

    What change did you make to your code? Remove the  int i=10; part inside the for loop and run again. 


    #include<stdio.h>

      int main()

      {

       int i;

      for(i=0;i<5;i++)

      {

        printf("%d",i);

       }

    return 0;

      }

    This prints 01234 as expected. 

    Are you sure? This action cannot be undone.
    Cancel
  • Shaswat Kumar

    MemberSep 21, 2018

    the code is same,

    the output of this code is 1010101010

    my question is why this...because once it enters the loop..the value of i will be changed to 10..and the loop will not iterate further because 10 is not less than 5

    Are you sure? This action cannot be undone.
    Cancel
  • kumar prasun

    MemberSep 21, 2018

    u have used int i=10 inside the loop....this causes the value of i equal to 10 every time it enters the loop....that is the int i inside the loop will act as another variable with name i.if u delete the int keyword the output will be 10 only.

    both i act as different variables.

    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorSep 21, 2018

    If the code is the same, your output won't change. Here's what you are doing - 

    for(i=0;i<5;i++)

      {

       int i=10;

        printf("%d",i);

       }

    1. The for loop determines how many times the loop will run. In your case, it will run from 0 to 4 (a total of 5 times).

    2. Inside the for loop, you are hard-setting the value of variable 'i' to 10. Note that 'i' is set to 10 and it's scope is limited within the for loop. 

    3. Then you are printing the current value of 'i' - which is 10. 

    4. In essence, you are printing the hard-set value of 'i' which is 10 in each loop. 

    If you remove 'i = 10' inside the loop, you will get output as 01234; which I believe is your expected output. 

    The value of 'i' isn't getting change to 10. The checks aren't performed inside the loop. Rather, loop runs a level 'above' what's inside. If that makes it easier to understand. 

    Are you sure? This action cannot be undone.
    Cancel
  • Shaswat Kumar

    MemberSep 21, 2018

    yes..u r right..i got it...thanks

    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorSep 21, 2018

    Perhaps you should look at passing by reference and passing by value to understand this in more detail. 

    PS: I no longer code in C. It's been over 1.5 decades since I wrote a working C program. ? 

    Are you sure? This action cannot be undone.
    Cancel
  • Shaswat Kumar

    MemberSep 21, 2018

    but i have to study c first.. im in first year in cse branch.. and the questions in exams are basically this type....that's why.....anyways thanks...

    i will be asking more question in the coming future...? 

    Are you sure? This action cannot be undone.
    Cancel
  • saandeep sreerambatla

    MemberSep 21, 2018

    IN this case, study about the scope of the variables that you assign.

    Scope will be local. what is meant by local is if you are assigning some value inside a loop the scope is inside the loop.

    The same case goes with the scope of the variable in function. If you declare a function and assign some value to a variable the scope will be limited in that function.

    Are you sure? This action cannot be undone.
    Cancel
  • Shaswat Kumar

    MemberSep 21, 2018


    but the variable is ..same that is i...

    .

    Are you sure? This action cannot be undone.
    Cancel
  • Jeffrey Arulraj

    MemberSep 22, 2018

    but the variable is ..same that is i...


    I have a problem with your code if you are trying to declare a variable with the same name twice and if the scope of the variables overlap it will throw a compilation error and not a valid output.


    That will be the case in your code snippet. the variable i is declared twice and with overlapped scope and so it will throw an error

    Are you sure? This action cannot be undone.
    Cancel
Home Channels Search Login Register