C Programming - Pointers - Discussion

Discussion Forum : Pointers - Find Output of Program (Q.No. 14)
14.
What will be the output of the program ?
#include<stdio.h>

int main()
{
    char *str;
    str = "%d\n";
    str++;
    str++;
    printf(str-2, 300);
    return 0;
}
No output
30
3
300
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
43 comments Page 3 of 5.

Gunjan said:   1 decade ago
What will be the output char ch=300;?

As it is unsigned it exceeds the range, what is the answer and why please explain.

Fanzy said:   1 decade ago
Pointers are always incremented by 2 byte. Then how it is possible? can anyone explain this please?

Abi said:   1 decade ago
Hi everyone!

Please explain, how come char ptr gives an integer as result without typecasting?

Ram said:   1 decade ago
printf is right?

RAJ KISHOR YADAV said:   1 decade ago
#include <stdio.h>
int main()
{

char *str="**********";

int i;
for(i=0;i<=3;i++)
printf("%*..*s\n",30,i,str);
return 0;

}

Hi guys,

Can any explain it?

Sahana said:   1 decade ago
printf("%d",300); and print 300.

But in case like:

char *str;
str="abc";
printf(str,"mno\n");

The output will be "abc".

Santhisuresh said:   1 decade ago
We gave str++ two times it gives str=str+2. In printing we are subtract 2 from str+2(i.e str+2-2). Therefore it prints the same value.

Srk said:   1 decade ago
Consider str is pointing to 1002.

If we increment it by one 1002+sizeof(char)*1 (size of chat is 2 bytes so it will Point to next location (1004) that is explicitly casted to store char,

( str = (char *)(str+1*sizeof(char)) )

To 1004 contains a garbage value and similarly 1006.

but in printf statement we will make the pointer to point 1002.

PAVIforlove said:   1 decade ago
Assume ch address is 100.

The ch pointer variable store the %d.

In memory location 100.

After increment it would be 101 then 102.

While printing ch-2 means 102-2 then it again pointing 100th location in 100 location it contains "%d" then it will print 300.

Alok Kumar said:   1 decade ago
char *ch;
ch="%s\n";
ch++;
ch++;
printf(ch-2,300);

Please explain it.


Post your comments here:

Your comments will be displayed after verification.