I want to use the following command (PINC & B00000011) to read 6 different conditions from hall effect sensors
You should study the C language bit more. An if statement is true if the argument is non-zero. 

Thus:

if (PINC &amp; B00000011) // is true if port C ls two bits are 01, 10 or 11
  Serial.println("1"); 
else if( PINC &amp; B00000010) // is true if port C ls two bits are 10 
  Serial.println("2");


As you can see the second if is covered by the first one already.
you probably want this:

if ((PINC &amp; B00000011)== B00000011) // is true if port C ls two bits are 11
  Serial.println("1"); 
else if( (PINC &amp; B00000010)==B00000010) // is true if port C ls two bits are 10 
  Serial.println("2");


Even that is dangerous as between reading the PINC the first time and the second time it might change. Also you are using the same mask twice. Let's give it another try:

pinc_state = (PINC &amp; B00000011);
if (pinc_state == B00000011) // is true if port C ls two bits are 11
  Serial.println("1"); 
else if( pinc_state==B00000010) // is true if port C ls two bits are 10 
  Serial.println("2");