Ir ao conteúdo

Posts recomendados

Postado

Tenho o seguinte fragmento de codigo:

  for(i = 1; i < SIZE; i++) {
    for(j = 0; j < ELEMENTOS; j++) {
        //auxElementTransfer vai usar as posições referente ao vetor de linhaB em f[0]
        //que vai pegar o valor da posicao e jogar em f[i].linhaB[j], 'i' a partir da
        //posicao 1.
        f[i].linhaB[j] = f[0].linhaB[auxElementTransfer+auxAuxElement];
        ++auxElementTransfer;
        if(auxElementTransfer == limResetAuxElmTrns) {auxElementTransfer = 0;}
    }
    ++auxAuxElement;
  }

agora quando eu uso o operador ternario '?' para substituir o 'IF' em:

if(auxElementTransfer == limResetAuxElmTrns) {auxElementTransfer = 0;}

para:

auxElementTransfer == limResetAuxElmTrns ? auxElementTransfer = 0 : printf("error\n");

só é executado a condição do 'printf' que seria o 'ELSE', mas essa seria uma condição impossivel de se alcançar no codigo, uma vez que usando o 'IF' ele executa como se deve.

ao compilar usando o GCC com -Wall ou Clang com -Wextra nao acusam nenhum erro, e usando o GDB para debugar o codigo tudo ocorre perfeitamente.

Alguem poderia me dizer o que pode ta ocorrendo para a condição 'TRUE' (auxElementTransfer = 0) usando o operador ternario '?' nao esta sendo executada??? Obrigado desde já =)

  • Curtir 1
Postado

Tente:

// variavel = condicao ? valor se true: valor se false;
auxElementTransfer = (auxElementTransfer == limResetAuxElmTrns) ? 0 : -1;
//Mensagem
printf("%s\n", (auxElementTransfer == 0) ? "Sucesso" : "Erro");

 

  • Curtir 1
Postado

@rjort_nine     testei esse ternário aqui e ele funcionou normal do jeito que você queria,  imagino que essa variável   auxElementTransfer    e essa    limResetAuxElmTrns    sejam inteiro, e ele executa   se for verdadeiro e também se for falso .

veja o teste que fiz :

#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main(){
    int auxElementTransfer=5;/* se mudar o valor ele imprime do jeito certo també */
    int limResetAuxElmTrns=5;
    auxElementTransfer == limResetAuxElmTrns ? auxElementTransfer = 0 : printf("error\n");
    printf("val de auxElementTransfer %d",auxElementTransfer);
    return 0;
}  

então se as duas variáveis forem iguais ,   ele faz o que está antes dos dois pontos , e se não for iguais  ele faz o que está depois dos dois pontos .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!