Problema com C

Boas!

Sobre o Switch case, salvo erro só funciona com numeros mesmo e tu estás a trabalhar com caracteres, em vez de "receberes" um caracter começa a receber um inteiro, afinal de contas é com inteiros que estás a trabalhar.

Sobre o teu problema dos if's, um ponto e virgula coloca-se no final de uma instrução indicando isto mesmo, que é o final dessa instrução. Ao colocares um ponto e virgula LOGO no final do if estás a dizer que o if acaba logo ali, que o está dentro das chavetas não pertence ao if.

Tal como o if, este problema acontece com for's, whiles and so on, tudo o que for blocos.

A indicação de final de bloco é delimitada por um par de chavetas como usas já, no caso desse bloco ser só uma instrução as chavetas podem-se omitir, por exemplo:

if (xpto == 1)
return kkcoisa ;

no caso de bloco:
if (xpto == 2)
{
blablabla++;
blebleble--;
return blablabla+blebleble;
}

Outro cuidado que deves ter é quando usas blocos ifs só de uma instrução e tens um else, a linha imeditamente antes ao else NÃO leva ponto e virgula. No caso de usares chavetas tem um funcionamento igual ao que descrevi anteriormente, por exemplo:
if (xpto == 3)
blabla++
else
blabla--;

Em bloco ficaria assim:

if (xpto == 4)
{
blabla++;
ble += blabla;
} else {
blabla--;
}

Moral da história..., usa sempre chavetas que nunca te enganas :p

Espero ter ajudado :)

abraços, HecKel
 
Heckel: creio que nos switch case podes comparar tudo, inteiros, floats, chars, string etc.

basta criares uma condição, ou seja, para cada caso do switch, ele executa uma função quando a condilção associada tiver valor lógico diferente de zero, isto é, verdadeira.

cumps
 
O switch pode comparar caracteres, basta colocar o caracter a comparar dentro de plicas ' '.
A ultima instrução do if, antes do else, leva ; tambem.
Só não se coloca ; antes do else em linguagens como o pascal.
 
Boas!

No C também não se mete a virgula e muito sinceramente nem sei se aceita com a virgula..., acho que aceita..., não tenho como confirmar agora.

abraços, HecKel
 
HecKel disse:
Boas!

No C também não se mete a virgula e muito sinceramente nem sei se aceita com a virgula..., acho que aceita..., não tenho como confirmar agora.

abraços, HecKel
Estás enganado. Em Pascal ou Delphi é que não dá. O compilador dá erro.
Em C, o gcc compila com "-Wall -pedantic" sem warnings nessa situação.

Um abraço!
 
Back
Topo