edited by
1,333 views
0 votes
0 votes
void main(main)
{
  int i,a[8]={000,001,010,011,100,101,110,111};
  for(i=0;i<8;i++)
  printf("%d",a[i]);
}

 
$\text{o/p is}$ $0,1,8,9,100,101,110,111$ $\text{Pls Explain}$

edited by

1 Answer

0 votes
0 votes
This happens because an integer digit preceded by 0 is interpreted as an octal number. First Four initialization in your array starts with 0 so by default Compiler takes it in octal form and then converts into integer. So as 000,,001, 010,011, converted into 0,1,8,9.

Related questions

0 votes
0 votes
1 answer
1
Debargha Mitra Roy asked 6 days ago
67 views
#include <stdio.h int main() { int a[3] = {1, 3, 5, 7, 9, 11}; int *ptr = a[0]; ptr += sizeof(int); printf("%d", *ptr); return 0; }(Assume size of int to be $2$ bytes.)T...
0 votes
0 votes
2 answers
3
Debargha Mitra Roy asked Apr 10
113 views
What is the output of the below code?#include <stdio.h void main() { static int var = 5; printf("%d ", var ); if (var) main(); }a. 1 2 3 4 5b. 1c. 5 4 3 2 1d. Error
1 votes
1 votes
1 answer
4
SSR17 asked Feb 29
254 views
#include <stdio.h int main() { int i = -1; int x = (unsigned char)i; printf("%d", x); return 0; }output is 255 , but please explain how