What will be the result of the following program?
main()
{
char p[]="String";
int x=0;

if(p=="String")
{
printf("Pass 1");
if(p[sizeof(p)-2]=='g')
printf("Pass 2");
else
printf("Fail 2");
}
else
{
printf("Fail 1");
if(p[sizeof(p)-2]=='g')
printf("Pass 2");
else
printf("Fail 2");
}
}

a) Pass 1, Pass 2
b) Fail 1, Fail 2
c) Pass 1, Fail 2
d) Fail 1, Pass 2
e) syntax error during compilation

Answers were Sorted based on User's Feedback



What will be the result of the following program? main() ..

Answer / jaroosh

Fail 1 , Pass 2.

Some explanation,
1. Fail 1
first of all, to compare strings in C, you use this strcmp
function, so this WOULD give PASS 1 :
if(strcmp(p,"String") == 0)
but
if(p=="String")
will fail because this line means :
if address of p is the same as address of some temporary
storage for literals, where literal "String" is stored,
which is very rarely true, because storing literals is
compiler specific and is very hard to estimate at runtime.
2. Pass 2
sizeof(p) gives 7, because sizeof(char) is 1 byte, and we
have 7 chars in array storing "String", which are :
[0]S
[1]t
[2]r
[3]i
[4]n
[5]g
[6]\0 (EOS)
now, clearly sizeof(p) - 2 is [5] which is "g"
thats why
if(p[sizeof(p)-2]=='g')
is true.

Is This Answer Correct ?    10 Yes 0 No

What will be the result of the following program? main() ..

Answer / guest

d) Fail 1, Pass 2

Is This Answer Correct ?    6 Yes 0 No

What will be the result of the following program? main() ..

Answer / reepal

e) syntex error during compilation

Is This Answer Correct ?    3 Yes 1 No

What will be the result of the following program? main() ..

Answer / rakhi

b) Fail 1 Fail 2

Is This Answer Correct ?    2 Yes 2 No

What will be the result of the following program? main() ..

Answer / guest

a) Pass 1, Pass 2

Is This Answer Correct ?    1 Yes 1 No

What will be the result of the following program? main() ..

Answer / vikram

b)fail1,fail2
bcoz whenever we compare strings,we use strcmp()
function,hence the condition in if() will not be true,
the control will go into else part and will print fail1,then
size of array p is 6 and sizeof(p)-2 results to 4 and hence
p[4]=='n'which again makes the condition in the if()
false,hence fail2 in else part will be printed.
thnx

Is This Answer Correct ?    1 Yes 1 No

What will be the result of the following program? main() ..

Answer / guest

c)Pass 1, Fail 2

Is This Answer Correct ?    1 Yes 2 No

What will be the result of the following program? main() ..

Answer / vinay deore

Fail 1,Fail 2

Is This Answer Correct ?    0 Yes 2 No

What will be the result of the following program? main() ..

Answer / guest

Fail 1,Fail 2

Is This Answer Correct ?    0 Yes 2 No

What will be the result of the following program? main() ..

Answer / shruti

syntax error during compilation..


we cannot compare strings using if(p == "string")

so will not work..

NOTE:
while comparing string otherwise also we use 'string'
(string in single quotes ' ' not " ")..

Is This Answer Correct ?    0 Yes 2 No

Post New Answer

More C Interview Questions

why we use "include" word before calling the header file. is there any special name for that include??????

1 Answers   TCS,


Do you know what are the properties of union in c?

0 Answers  


What are control structures? What are the different types?

0 Answers  


Is it better to bitshift a value than to multiply by 2?

0 Answers  


What are the various topologies? Which one is the most secure?

2 Answers  






#define FALSE -1 #define TRUE 1 #define NULL 0 main() { if(NULL) puts("NULL"); else if(FALSE) puts("TRUE"); else puts("FALSE"); }

1 Answers  


Can we add pointers together?

0 Answers  


Why can't I perform arithmetic on a void* pointer?

0 Answers  


How will you allocate memory to double a pointer?

1 Answers  


Can we use any name in place of argv and argc as command line arguments?

0 Answers  


What is unsigned int in c?

0 Answers  


Explain this code. #include <stdio.h> void f1(int *k) { *k = *k + 10; } main ( ){ int i; i = 0; printf (" The value of i before call %d \n", i); f1 (&i); printf (" The value of i after call %d \n", i); }

3 Answers   IBM,


Categories