C++ interview question
-
Hi, I was asked the below in an interview:- What does the following code below do?
char nextChar(); int main() { char ch; ch = nextChar() != '\0'; std::cout << (int) ch; return 0; }
I said it would not compile since there is no definition (only a declaration) of the function nextChar() but the answer was 0 or 1. I am not sure why and also how can you use the!=
operator outside aif
orwhile
statement (i.e. something that expectstrue
orfalse
? Thank you for any input. -
Hi, I was asked the below in an interview:- What does the following code below do?
char nextChar(); int main() { char ch; ch = nextChar() != '\0'; std::cout << (int) ch; return 0; }
I said it would not compile since there is no definition (only a declaration) of the function nextChar() but the answer was 0 or 1. I am not sure why and also how can you use the!=
operator outside aif
orwhile
statement (i.e. something that expectstrue
orfalse
? Thank you for any input.minkowski wrote:
nextChar() != '\0'
This part of the code actually "returns" something (true or false). You then assign the result of the comparison into the ch variable. true is usually 1 and false is 0. So, your character will contain either 0 or 1. If you try to ouptut as it is (so, without the casting to an integer), you will end up printing the character whose value is 0 or 1 (so, not printable character), that's why you need to cast it to an integer. I guess that having a body for your function was not really important for the interview question: they simply have a function that returns a character...
Cédric Moonen Software developer
Charting control [v2.0] OpenGL game tutorial in C++ -
Hi, I was asked the below in an interview:- What does the following code below do?
char nextChar(); int main() { char ch; ch = nextChar() != '\0'; std::cout << (int) ch; return 0; }
I said it would not compile since there is no definition (only a declaration) of the function nextChar() but the answer was 0 or 1. I am not sure why and also how can you use the!=
operator outside aif
orwhile
statement (i.e. something that expectstrue
orfalse
? Thank you for any input.Yes you should get a linker error, due to the missing function definition
You need to google first, if you have "It's urgent please" mentioned in your question. ;-)_AnShUmAn_
-
Hi, I was asked the below in an interview:- What does the following code below do?
char nextChar(); int main() { char ch; ch = nextChar() != '\0'; std::cout << (int) ch; return 0; }
I said it would not compile since there is no definition (only a declaration) of the function nextChar() but the answer was 0 or 1. I am not sure why and also how can you use the!=
operator outside aif
orwhile
statement (i.e. something that expectstrue
orfalse
? Thank you for any input.minkowski wrote:
I said it would not compile since there is no definition (only a declaration) of the function nextChar()
Your point is correct (please note, however, that you would get a linker error, not a compiler one). Now suppose
nextChar
is defined, somewhere (it's actual implementation doesn't matter).minkowski wrote:
but the answer was 0 or 1. I am not sure why and also how can you use the != operator outside a if or while statement (i.e. something that expects true or false ?
nextChar() != '\0';
the above expression evaluates
true
whenevernextChar
return a value different from'\0'
,false
otherwise. Sincetrue
is1
[^] (false
is0
) an implicit cast frombool
tochar
(that is aninteger
type) happens and you getch=1
(orch=0
). :) BTW Are you that Minkowski [^]? :-DIf the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Hi, I was asked the below in an interview:- What does the following code below do?
char nextChar(); int main() { char ch; ch = nextChar() != '\0'; std::cout << (int) ch; return 0; }
I said it would not compile since there is no definition (only a declaration) of the function nextChar() but the answer was 0 or 1. I am not sure why and also how can you use the!=
operator outside aif
orwhile
statement (i.e. something that expectstrue
orfalse
? Thank you for any input.minkowski wrote:
ch = nextChar() != '\0';
This is what the question is aiming at. It's a matter of operator precedence.
«_Superman_» I love work. It gives me something to do between weekends.
-
minkowski wrote:
nextChar() != '\0'
This part of the code actually "returns" something (true or false). You then assign the result of the comparison into the ch variable. true is usually 1 and false is 0. So, your character will contain either 0 or 1. If you try to ouptut as it is (so, without the casting to an integer), you will end up printing the character whose value is 0 or 1 (so, not printable character), that's why you need to cast it to an integer. I guess that having a body for your function was not really important for the interview question: they simply have a function that returns a character...
Cédric Moonen Software developer
Charting control [v2.0] OpenGL game tutorial in C++Hi ya, Thanks for your reply. Yes as you correctly said the answer is 0 or 1. I got confused because of the lack of function definition. Can I ask how it is possible that you can use the
!=
operator without being enclosed in a statement that expectstrue
/false
? e.g.while()
,if()
Thanks for any information. -
Hi ya, Thanks for your reply. Yes as you correctly said the answer is 0 or 1. I got confused because of the lack of function definition. Can I ask how it is possible that you can use the
!=
operator without being enclosed in a statement that expectstrue
/false
? e.g.while()
,if()
Thanks for any information.minkowski wrote:
Can I ask how it is possible that you can use the != operator without being enclosed in a statement that expects
!=
is a binary operator that may be used in any expression. :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Yes you should get a linker error, due to the missing function definition
You need to google first, if you have "It's urgent please" mentioned in your question. ;-)_AnShUmAn_
Most interview questions just use code fragments, and you're supposed to assume functions exist in other libraries (that's generally spelled out in the interview). Mind you, this is a very simple example question and probably meant as a warm up, not actually a real test. You should see the kinds of questions we ask in our interviews (although coding tests are only a small part of them).
There are three kinds of people in the world - those who can count and those who can't...
-
Most interview questions just use code fragments, and you're supposed to assume functions exist in other libraries (that's generally spelled out in the interview). Mind you, this is a very simple example question and probably meant as a warm up, not actually a real test. You should see the kinds of questions we ask in our interviews (although coding tests are only a small part of them).
There are three kinds of people in the world - those who can count and those who can't...
-
minkowski wrote:
I said it would not compile since there is no definition (only a declaration) of the function nextChar()
Your point is correct (please note, however, that you would get a linker error, not a compiler one). Now suppose
nextChar
is defined, somewhere (it's actual implementation doesn't matter).minkowski wrote:
but the answer was 0 or 1. I am not sure why and also how can you use the != operator outside a if or while statement (i.e. something that expects true or false ?
nextChar() != '\0';
the above expression evaluates
true
whenevernextChar
return a value different from'\0'
,false
otherwise. Sincetrue
is1
[^] (false
is0
) an implicit cast frombool
tochar
(that is aninteger
type) happens and you getch=1
(orch=0
). :) BTW Are you that Minkowski [^]? :-DIf the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]CPallini wrote:
W Are you that Minkowski [^]?
[VisualCalc][Binary Guide][CommDialogs] | [Forums Guidelines]
-
CPallini wrote:
W Are you that Minkowski [^]?
[VisualCalc][Binary Guide][CommDialogs] | [Forums Guidelines]
-
:doh: I was awaiting for some geometry hints... :-D
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
:doh: I was awaiting for some geometry hints... :-D
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]CPallini wrote:
I was awaiting for some geometry hints...
:suss: shhhh. dont' tell anyone, but i'm letting it leak out - a triangle... has 3 sides. shhh. don't let anyone know though
-
Hi ya, Thanks for your post, was wondering if you could put up some of your interview code questions? :)
LOL - I wouldn't be allowed to do that, just in case anyone reading here comes in for an interview (which is quite possible) :-D
There are three kinds of people in the world - those who can count and those who can't...
-
CPallini wrote:
I was awaiting for some geometry hints...
:suss: shhhh. dont' tell anyone, but i'm letting it leak out - a triangle... has 3 sides. shhh. don't let anyone know though
UserNameless wrote:
a triangle... has 3 sides.
That's the reason geometry is soooo difficult to grasp:
triangle => three sides
...while plain common sense would suggesttriangle => three angles
, or, at least,triside => three sides
. :~ :-DIf the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
UserNameless wrote:
a triangle... has 3 sides.
That's the reason geometry is soooo difficult to grasp:
triangle => three sides
...while plain common sense would suggesttriangle => three angles
, or, at least,triside => three sides
. :~ :-DIf the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]