Hi,
I want to display hello world after compiling the below code, How can this be possible?
main()
{
if(?)
{
printf("hello");
}
else
{
printf( "world");
}
}
Is this possible by any means? what should be in place of question mark above
Hi,
I want to display hello world after compiling the below code, How can this be possible?
main()
{
if(?)
{
printf("hello");
}
else
{
printf( "world");
}
}
Is this possible by any means? what should be in place of question mark above
This seems an odd question, that can be discussed with logic.
It is like a fork in a road - you can go one way or the other way - based on a "rule". Therefore you can't experience both ways unless you turn back at some point.
I don't see in your code how you plan to turn back, so it follows that you can only traverse one fork of the road... regardless of the "rule".
There are plenty of C tutorials, and probably only around 30 keywords in the C language..
Yes, this is indeed true when one stick to the rule of if-else construct.But surprisingly this was asked to me in one interview.in order to provide the solution, I tried and after pondering I was able to overcome it with double iteration i.e. as you said above coming back to same point on a single road which is bifurcated.
I transverse back using do-while loop such that firstly if is executed and then else is executed.
var=0;
do
{
if(var==0)
{
printf("hello");
var+=1;
}
else
{
printf("world");
var+=1;
}
} while( var<=1);
But the interviewer was not satisfied with this response. He gave me a hint to call a function in if condition such that "hello world" is printed. I could not get him.
or is this question a worthless??
if( ???????? ) is it possible to call some function over here?
{
printf("hello");
}
else
{
printf("world");
}
Yes,It is Possible.You Know This question is similar to : Write a Hello world C program without using a semicolon(;)
This is Full code:
#include<stdio.h>
#include<conio.h>
int DemoFunction( void )
{
printf("hello ");
return 0;
}
int main( )
{
if( DemoFunction( ) ) // is it possible to call some function over here?
{
printf("hello");
}
else
{
printf("world");
}
getch();
return 0;
}
Yes great buddy,indeed I thought for this, but i was confused that calling the function in the the parameter and the zero(0) which is a return type, will it be returned to the stack or act as if condition's parameter?
This is good example out of box, where the "Hello" is printed by function calling and the "world" is printed by else condition.
Thanx a lot....
I don't imagine the compiler not objecting to the prior code 'cause void is not a type that can be true or false. G_d I hate these stupid code puzzles, they never seem to illuminate much! You could put a static variable in the fn, something like Virgin = 0. When the function executes the last line is Virgin =1. Virgin can be used as an index for a string table.
You're still only traversing one path of the fork of course. Which means that the other path is still never exercised, i.e. unused code - not great coding because effectively it can all be collapsed to:
int main(void) { demofunction(); printf("world"); return(0); }
The hardcoded if..else and unused code is not a good thing for readability/maintenance and would fail a code review.
Nor a handy trick for interviewers surely - perhaps topics like recursive algorithms, bitwise operators, boolean logic, inheritance, polymorphism, pure virtual and virtual functions and other topics would be more useful to learn and test, but what do I know!
Completely agreed .
But the irony is this type of questions are really asked in interview.
I was asked a question to write a hello world C program without using a single semicolon.