Sejam as variáveis a, b e c do tipo int (inteiro). Considerando as linhas de código na linguagem C abaixo:
a = 3, b = 2, c = 2;
c++;
c += !a >= b && c != b;
Assinale a alternativa que corresponda ao valor da variável c ao final da execução:
Soluções para a tarefa
Resposta:
A alternativa "B" está correta.
Explicação:
Na primeira linha as variáveis a, b, c (todas do tipo int) são inicializadas com os valores 3, 2 e 2, respectivamente;
Na segunda linha a variável c é incrementada em 1 unidade. Logo, c = 3 e as demais variáveis permanecem inalteradas (a = 3 e b = 2);
Na terceira linha temos a expressão lógica !a >= b && c != b sendo somada ao valor de c e atribuída à própria variável c ;
Do lado esquerdo da expressão temos a verificação se a negação de a (!a) é maior ou igual a b. Como o valor de a é diferente de zero, portanto considerado na linguagem C como um valor verdadeiro, a sua negação será considerada como falso, ou seja, 0 (zero). E como b tem valor igual a 2, o resultado de !a >= b (0 >= 2) será falso (F);
Do lado direito da expressão temos a verificação se a variável c é diferente de b. Após ter sido incrementada, c = 3. E como b = 2, c != b será verdadeiro (V);
Substituindo na expressão !a <= b && c != b, temos F && V, ou seja, falso E verdadeiro, o que resulta em falso;
Resta atribuir o resultado da expressão lógica à variável c.
Como c é do tipo inteiro, o valor falso será representado pela linguagem C como 0 (zero);
Substituindo em c += !a >= b && c != b, temos c += 0, que é o mesmo que c = c + 0.
Assim, c = 3 + 0 = 3.