I2C send and read 2 bytes many slave
There are so many mistakes in your code. I'll do my best to correct them using comments. The code for the slaves should be as follows:

#include "Wire.h"


//
// i2c_test_01

//
// This demonstrates a master transmitting to a slave.
// 

// The master transmits a value read from an analogue port.

// The slave sends the value to the serial device.
//


int inp = 0;  // input pin

const byte SlaveDeviceId = 2;

void setup() {  
  Wire.begin(SlaveDeviceId);  // here the slave joins the bus, with its address as argument to begin()
  Wire.onRequest(callback);  // here you indicate what the slave should do if a bus master queries it
}

void callback() {
  int input0 = analogRead(inp);  
  // Send two bytes to master
  Wire.write(input0 &gt;&gt; 8);
  Wire.write(input0 &amp; 255);

  inp++;
  if (inp == 4) {
    inp = 0;
  }

}

void loop(){}


This is the master's code:

#include "Wire.h"

const byte SlaveDeviceId = 1;
const byte SlaveDeviceId2 = 2;
char inputDev = 4;  // number of devices connected to slave analog inputs

void setup() {
  Wire.begin();   // no argument here since its a master
  Serial.begin(9600);
}

//the onReceive() method is for slaves receiving from a master, so we dont use it here

void loop() {
  Serial.println("\r\nSlave 1: ");
  for (char i = 0; i &lt; inputDev; i++){
    Wire.requestFrom(SlaveDeviceId, 2);
    delay(1);  // more than enough time for all the data to come in
    int val = Wire.read() &lt;&lt; 8;
    val |= Wire.read() &amp; 0xFF;
    Serial.print(val);
    Serial.print(",");
  }
  Serial.println("\r\nSlave 2: ");
  for (char i = 0; i &lt; inputDev; i++){
    Wire.requestFrom(SlaveDeviceId2, 2);
    delay(1);  // more than enough time for all the data to come in
    int val = Wire.read() &lt;&lt; 8;
    val |= Wire.read() &amp; 0xFF;
    Serial.print(val);
    Serial.print(",");
  }        

}