auto:
Automatic variables or auto variables are default storage class of local variable. An auto variable cannot be declared globally. (Why?)
Properties of auto storage class.
(1) Default initial value of auto variable is garbage. For example:
#include<stdio.h>
int main(){
int i;
auto char c;
float f;
printf("%d %c %f",i,c,f);
return 0;
}
Output: Garbage Garbage Garbage
(2)Visibility of auto variable is within the block where it has declared. For examples:
(a)
#include<stdio.h>
int main(){
int a=10;
{
int a=20;
printf("%d",a);
}
printf(" %d",a);
return 0;
}
Output: 20 10
Explanation: Visibility of variable a which has declared inside inner has block only within that block.
(b)
#include<stdio.h>
int main(){
{
int a=20;
printf("%d",a);
}
printf(" %d",a); //a is not visible here
return 0;
}
Output: Compilation error
Explanation: Visibility of variable a which has declared inside inner block has only within that block.
Question: What will be output of following c code?
#include<stdio.h>
int main(){
int a=0;
{
int a=10;
printf("%d",a);
a++;
{
a=20;
}
{
printf(" %d",a);
int a=30; {a++;}
printf(" %d",a++);
}
printf(" %d",a++);
}
printf(" %d",a);
return 0;
}
(3) Scope of auto variable is within the block where it has declared. For example:
(a)
#include<stdio.h>
int main(){
int i;
for(i=0;i<4;i++){
int a=20;
printf("%d",a);
a++;
}
return 0;
}
Output: 20 20 20 20
Explanation: Variable declared inside the for loop block has scope only within that block. After the first iteration variable a becomes dead and it looses its incremented value. In second iteration variable a is again declared and initialized and so on.
(b)
#include<stdio.h>
int main(){
int i=0;
{
auto int a=20;
XYZ:;
printf("%d",a);
a++;
i++;
}
if (i<3)
goto xyz;
return 0;
}
Output: Compilation error.
Explanation: Variable a which declared inside inner block has scope only within that block. Ones program control comes out of that block variable will be dead. If with the help of goto statement we will go to inside that inner block in the printf statement complier will not known about variable a because it has been destroyed already. Hence complier will show an error message: undefined symbol a. But if you will write goto statement label before the declaration of variable then there is not any problem because variable a will again declared and initialize.
#include<stdio.h>
int main(){
int i=0;
{
XYZ:;
auto int a=20;
printf("%d",a);
a++;
i++;
}
if (i<3)
goto xyz;
return 0;
}
Output: 20 20 20
(4) From above example it is clear auto variable initialize each time.
(5)An auto variable gets memory at run time.
19 comments:
thanks for providing this type of sammary
#include
int main(){
int a=0;
{
int a=10;
printf("%d",a);
a++;
{
a=20;
}
{
printf(" %d",a);
int a=30; {a++;}
printf(" %d",a++);
}
printf(" %d",a++);
}
printf(" %d",a);
return 0;
}
can u give answer of that question of your blog as well as explanation of the ans...
thanks.
#include
int main(){
int a=0;
{
int a=10;
printf("%d",a);
a++;
{
a=20;
}
{
printf(" %d",a);
int a=30;
{
a++;
}
printf(" %d",a++);
}
printf(" %d",a++);
}
printf(" %d",a);
getch();
return 0;
}
OUTPUT: 10,20,31,20,0
read the program in format in which i have written . if any new variable is declared then local variable get more priority inside block {}
. if u have any confusion please let me know.
plz explain me why the block a=20 is still alive
how can u initialize a variable in c anywhere?????
For #include
int main(){
int i=0;
{
auto int a=20;
XYZ:;
printf("%d",a);
a++;
i++;
}
if (i<3)
goto xyz;
return 0;
}
I got
OUTPUT: 20 20 20
but, for
#include
int main(){
int i=0;
{
XYZ:;
auto int a=20;
printf("%d",a);
a++;
i++;
}
if (i<3)
goto xyz;
return 0;
}
I got
OUTPUT: 20 21 22
I really confused!
good concept
since it is not declared,so no new variable is allocated memory. this is just the previous "a" which is assigned 20.(earlier it has been updated to 11 by a++)
10,0,31,0,1
need answer for this que..
An auto variable cannot be declared globally. (Why?)
It is wrong. It should be "A register variable cannot be declared globally. (Why?)"
using assignment operator
eg.int a;
a=10;
@Admin
Exaple (b) : In this goto label 'XYZ' is in caps & while calling it ,its in 'xyz' small.
Plz correct it.
and i'm not getting any error, it is printing 20 21 22.
we need some more explanation on it.
outpu- 10 20 31 20 0
10 20 31 20 0
jyoti- because a=20 is assignment its not declaration
When I hv written xyz:; before
auto int a=20;
It is showing an error declaration is not allowed here . Plzz reply
even I have same question......auto variable cannot declared globally.....reply anyone
Post a Comment