Siempre pensé que si declaraba estas tres variables, todas tendrían el valor 0
int column, row, index = 0;
Pero encuentro que solo el índice es igual a cero y los otros son basura como 844553 y 2423445.
¿Cómo puedo inicializar todas estas variables a cero sin declarar cada variable en una nueva línea?

int* a, b, c;no hace lo que parece).=0para cada una en sus definiciones. Y, si realmente quieres muchas variables, prueba una matriz:int a[10]={0}inicializará cada unaa[i]a 0 por ti.Respuestas:
fuente
Cuando declaras:
Solo el índice se establece en cero.
Sin embargo, puede hacer lo siguiente:
Pero personalmente prefiero lo siguiente que se ha señalado.
Es una forma más legible en mi opinión.
o
fuente
bool previousInputValue, presentInputValue;) o si simplemente son del mismo tipo ahora pero realmente no necesitan serlo (uint8_t height, width;podría convertirseuint8_t height; uint16_t width;en el futuro y debería haber sidouint8_t height; uint8_t width;para empezar).uint8_t height; uint16_t width;lugar deuint8_t height, width;guardar 10 caracteres en el futuro. :-) por supuesto, puedes hacerlo como quieras. Solo asegúrate de que sea fácil de leer. Entonces la última forma es la más explícita.int presentValue = 0; typeof(presentValue) previousValue = presentValue;, pero creo quetypeof()es una extensión GCC no estándar.Como dijo @Josh, la respuesta correcta es:
Tendrá que estar atento a lo mismo con los punteros. Esta:
Es equivalente a:
fuente
unsigned long x, y;declaraxcomounsigned longperoysolounsigned, akaunsigned int! Eso es exactamente lo mismo! </rant>int *amedio que*arepresenta unintvalor.void* acompilará yvoid *a, b, cno lo hará? Esta racionalización funciona para mí.Si declara una variable / objeto por línea, no solo resuelve este problema, sino que aclara el código y evita errores tontos al declarar punteros.
Sin embargo, para responder directamente a su pregunta, debe inicializar cada variable a 0 explícitamente.
int a = 0, b = 0, c = 0;.fuente
Tenga en cuenta que este formulario también funcionará con tipos personalizados, especialmente cuando sus constructores toman más de un argumento.
fuente
auto...): int columna { 0 } , fila { 0 } , índice { 0 } ;A partir de 2k18, puede usar enlaces estructurados :
Demo
fuente
Posibles enfoques:
memseto{0}la matriz.structy,memseto tenga un constructor que los inicialice a cero.fuente
No recomendaría esto, pero si realmente te gusta ser una línea y solo escribir 0 una vez, también puedes hacer esto:
fuente
Como otros han mencionado, desde C ++ 17 en adelante puedes usar enlaces estructurados para múltiples asignaciones de variables.
Combinando esto con
std::arrayy deducción de argumento de plantilla podemos escribir una función que asigna un valor a un número arbitrario de variables sin repetir el tipo o valor .Demo
fuente
Cuando declara una variable sin inicializarla, se selecciona un número aleatorio de la memoria y la variable se inicializa a ese valor.
fuente