Ese código no te va a compilar en la vida... nada de "me da un resultado diferente".
En c++ existe la sobrecarga de operadores, y da la casualidad que '<<' se conoce como operador de inserción. Este operador es unario, es decir, únicamente va a aceptar un parámetro.
Llevando esto a C sería como hacer algo tal que (imagínate que puedes tener una función que se llame '<<':
Se ve claramente que en la segunda línea estás intentando llamar a una función con 3 parámetros... que ni existe ni se la espera.
Cada vez que quieres llevar algo a la consola con cout tiene que ir precedido de '<<'. Si quieres volcar dos variables independientes, necesitas usar ese operador para cada una... y si entre medias de las dos variables tienes que introducir una coma... pues otro operador más:
Código C++:
Ver originalstd::cout << "a = " << i << "," << j;
Por eso te decía... es mucho más importante aprender los conceptos del lenguaje, como la sobrecarga de funciones. Y has de tener en cuenta que los operadores son tratados prácticamente como funciones y la prueba la tienes en el siguiente ejemplo:
Código C++:
Ver originalint main()
{
std::operator<<(std::cout,"Una prueba") << std::endl;
}
Que es equivalente a:
Código C++:
Ver originalint main()
{
std::operator<<(std::cout,"Una prueba");
std::cout << std::endl;
}
y a:
Código C++:
Ver originalint main()
{
std::cout << "Una prueba" << std::endl;
}
¿Cómo funciona?
Sobrecarga de operadores. Cuando estudies esa parte entenderás todo esto :)