Sempre achei que, se eu declarar essas três variáveis, todas elas terão o valor 0
int column, row, index = 0;
Mas acho que apenas o índice é igual a zero e os outros são lixo como 844553 e 2423445.
Como posso inicializar todas essas variáveis para zero sem declarar cada variável em uma nova linha?
int* a, b, c;
não faz o que parece).=0
para cada uma em suas definições. E, se você realmente deseja muitas variáveis, tente uma matriz:int a[10]={0}
inicializará cada umaa[i]
em 0 para você.Respostas:
fonte
Quando você declara:
Somente o índice está definido como zero.
No entanto, você pode fazer o seguinte:
Mas, pessoalmente, prefiro o seguinte, que foi apontado.
É uma forma mais legível na minha opinião.
ou
fonte
bool previousInputValue, presentInputValue;
) ou se são do mesmo tipo agora, mas não precisam ser (uint8_t height, width;
podem se transformaruint8_t height; uint16_t width;
no futuro e deveriam ter sidouint8_t height; uint8_t width;
começar com).uint8_t height; uint16_t width;
vez deuint8_t height, width;
salvar 10 caracteres no futuro. :-) é claro que você pode fazê-lo como quiser. Apenas certifique-se de que seja fácil de ler. Portanto, a última forma é a mais explícita.int presentValue = 0; typeof(presentValue) previousValue = presentValue;
, mas acredito que essatypeof()
é uma extensão não padrão do GCC.Como o @Josh disse, a resposta correta é:
Você precisará observar a mesma coisa com os ponteiros. Este:
É equivalente a:
fonte
unsigned long x, y;
declaradox
comounsigned long
masy
apenas comounsigned
, akaunsigned int
! Isso é exatamente o mesmo! </rant>int *a
meio que*a
representa umint
valor.void* a
que compilar evoid *a, b, c
não. Essa racionalização funciona para mim.Se você declarar uma variável / objeto por linha, não apenas solucionará esse problema, como também tornará o código mais claro e evitará erros tolos ao declarar ponteiros.
Para responder diretamente à sua pergunta, você deve inicializar cada variável para 0 explicitamente.
int a = 0, b = 0, c = 0;
.fonte
Observe que este formulário também funcionará com tipos personalizados, especialmente quando seus construtores usam mais de um argumento.
fonte
auto
...): int coluna { 0 } , linha { 0 } , índice { 0 } ;A partir de 2k18, você pode usar Ligações Estruturadas :
Demo
fonte
Possíveis abordagens:
memset
ou{0}
a matriz.struct
e /memset
ou tenha um construtor que os inicializaria em zero.fonte
Eu não recomendaria isso, mas se você realmente gosta de ser uma linha e escrever 0 apenas uma vez, também pode fazer isso:
fonte
Como outros mencionaram, a partir do C ++ 17 em diante, você pode usar ligações estruturadas para várias atribuições de variáveis.
Combinando isso com
std::array
e dedução argumento modelo podemos escrever uma função que atribui um valor a um número arbitrário de variáveis sem repetir o tipo ou valor .Demo
fonte
Quando você declara uma variável sem inicializá-la, um número aleatório da memória é selecionado e a variável é inicializada com esse valor.
fonte