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;
}
Discussion:
43 comments Page 4 of 5.
Srbh said:
1 decade ago
char *ch;
ch="%d";
printf(ch,300);
printf("ch\n",300);
printf(ch,"300");
Anyone please explain me how these 3 printf statements differs ?
ch="%d";
printf(ch,300);
printf("ch\n",300);
printf(ch,"300");
Anyone please explain me how these 3 printf statements differs ?
HarshaN said:
1 decade ago
@Vallabh
Why only one argument in the printf gets printed instead of two arguments in your second example?
Some one pls explain
Why only one argument in the printf gets printed instead of two arguments in your second example?
Some one pls explain
Mitali said:
1 decade ago
But here the value of str is not replaced by the value enclosed in double quote. So how is this possible?
Vinay said:
1 decade ago
We all know that we cannot substract any integer value in pointer then how can we substract 2 in it please. Any one who know answer this ?
Vallabh said:
1 decade ago
Because it will take it as :
printf("%d",300); and print 300.
But in case like
char *str;
str="abc";
printf(str,"mno\n");
The output will be "abc".
printf("%d",300); and print 300.
But in case like
char *str;
str="abc";
printf(str,"mno\n");
The output will be "abc".
Jasmin said:
1 decade ago
Can any body explain what happened to printf (str-2, 300) why only 300 is answer ? Why the value of str-2 is not printed. ?
Sujith said:
1 decade ago
str-2 one's incremented then it becomes str-1
then again incremented then it becomes str
then str="%d\n"; then 300 will print
then again incremented then it becomes str
then str="%d\n"; then 300 will print
Pavan said:
1 decade ago
Thank you sohan and archana.
Suresh said:
1 decade ago
Thank you sohan lal mits. There is clearance in your explanation. Thanks a lot.
Sohan lal mits said:
1 decade ago
We know that when we increament pointer wihh n values like then pointer point to nth value address and whereas pointer decrease with nth value so pointer locate same address as previus so according question
char *str;
str = "%d\n";
str++;
str++;
printf(str-2, 300);
output:300
char *str;
str = "%d\n";
str++;
str++;
printf(str-2, 300);
output:300
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers