Pages: [1]   Go Down
Author Topic: AJUDA COM PROGRAMAÇÃO (state ? bit : 0)  (Read 598 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 74
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

    Pessoal, estou estudando um pouco mais a fundo o arduindo e ja descobri mtas coisas legais, como por exemplo escrever duas saidas ao mesmo tempo, em fim... mas estou uma baita duvida, não encontrei nada a respeito disto, dentro do código do PulseIn tem a seguinte atribuição:
Code:
       unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout)
uint8_t bit = digitalPinToBitMask(pin);
[b] uint8_t stateMask = (state ? bit : 0);[/b]
O que esta interrogação e este dois pontos fazem com os bits?
Logged

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

É uma forma simplificada de fazer um if.

Essa linha:

Code:
uint8_t stateMask = (state ? bit : 0);

Funciona da mesmissima forma que o código abaixo:

Code:
uint8_t stateMask;
if (state)
   stateMask = bit;
else
   stateMask = 0;

Ou seja:

Code:
( condição ? valor_se_verdadeiro : valor_se_falso )
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 74
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muito obrigado amigo. Mais uma coisa, eu poderia então, fazer comparação utilizando uma linha apenas como esta para comparar um valor que não seja booleano também certo?
Code:
uint8_t stateMask = (state==valor_comparado ? bit : 0);


ou ainda posso tb acrescentar mais informações como mais se o valor for verdadeiro ou falso?
como eu pesquiso isto no google? Do que se trata afinal? Isso pode ser usado no C++  tb ou e especifico do ardu?
Vlw man!
Logged

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Isso se chama operador ternário. O código que você postou funciona sem problemas, a ideia é isso mesmo.

Esse operador faz parte do C e derivados (C++, C#, etc.), e não somente do Arduino. Outras linguagens também têm esse operador.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 74
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vlw amigo. Mt obrigado msm.
Logged

Pages: [1]   Go Up
Jump to: