• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

'if'block ??

 
sonir shah
Ranch Hand
Posts: 435
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What will the following program print?

I tried running the program, it printed "false false"
I cannot understand the if/else block i.e
if( b )
{
x = ( ch == ia[ch]);
}
else x = ( ba[ch] = b );
Can any one explain me??
Sonir
 
DC Dalton
Ranch Hand
Posts: 287
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The boolean b is automatically intialized to false. The char ch is automatically initialized to \u0000 which is 0 (Remember you can use Unicode anywhere in your code) so the if statement reads like this if (false) // skips the if section and goes to the else block. The assignment else x = ( ba[ch] = b ); will break down like this
else x = ( ba[ch] = b ); //original
else x = (ba[0] = false); // first op
else x = (false); 2nd op
So the sys print will print
System.out.println(false" "+false);
 
patrick tang
Ranch Hand
Posts: 44
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
member variables will be given default value if they're not initiated. so
b=false
ia=0
ch='\u0000'
ba=false
so in if block, as b is false, it'll go to else statement. b(false) is first assigned to ba, then x. so both x and ba[ch] are false
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic