Algunos lenguajes soportan la concatenación implícita de literales string. Es algo a tener en cuenta, porque podría causar problemas difíciles de detectar a simple vista. En el ejemplo que se muestra, al existir un valor por defecto para el segundo parámetro de la función, si se omite la coma en la lista de argumentos, ambos strings se pasan al primer parámetro, concatenados como uno solo.
Click aquí para una versión accesible de la infografía (apta para lectores electrónicos)
¡Cuidado con la concatenación implícita!
¿Qué problema tiene esta lista en C?
char *lista[] = {
"nombre"
"apellido",
"e-mail",
"domicilio"
};
Veamos su contenido: nombreapellido, e-mail, domicilio
Sin una coma entre los dos primeros elementos, no se produce un error sino una concatenación.
C, Python y C++ concatenan los strings literales adyacentes.
Este ejemplo muestra que podría darse un error poco evidente si la intención fuera pasar “apellido” como segundo argumento.
C++:
string funcion(string a, string b = "") {
return a;
}
int main() {
cout << funcion("nombre" "apellido");
return 0;
}
Python:
def funcion(a, b=""):
return a
print(funcion("nombre" "apellido"))