lcd weird chars

hi im testing my lcd for a project im takin g variables from compass and try to print it on lcd and guess what it dosnt work it print weird chars i never seen before i print the hello world and it worked just fine im using 1602 i2c lcd 

lcd library from https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

my code
[#include <Wire.h>
#include <MechaQMC5883.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
MechaQMC5883 qmc;
void setup() {
  Wire.begin();
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  qmc.init();
}

void loop() {
  int x,y,z;
  qmc.read(&x,&y,&z);
  Serial.print("x: ");
  Serial.print(x);
  Serial.print(" y: ");
  Serial.print(y);
  Serial.print(" z: ");
  Serial.print(z);
  Serial.println();
    lcd.print("x"+x);lcd.print("y"+y);lcd.print("z"+z);
  delay(2000);
}]

i attached pics of the lcd below i tried lc.clear/lcd.home did not fix it and for any one is questioning soldering it came soldiered already

What happens if you just do

lcd.print("x");lcd.print("y");lcd.print("z");

lcd.print("x"+x);lcd.print("y"+y);lcd.print("z"+z);

Have you ever seen lcd.print() syntax like that anywhere else? It is not correct.

Use the same syntax you use for the Serial printing.

Note that there is not line feed on the lcd so, lcd.println() is not valid. You need to use cursor commands instead for positioning.

evanmars:
What happens if you just do

lcd.print("x");lcd.print("y");lcd.print("z");

it fine gone get xyz
i solved it by using two different printing statement and help from setcursor but this not efficient at all

Why is it not efficient?

but this not efficient at all

Since when is properly written, functioning, code not efficient?

If you want to overload the + operator for ints and chars and char arrays, feel free. But quit pissing and moaning when you invoke the standard + operator and it adds two values, like it is supposed to.