Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Ako pochopiť tento programátorský zvrat?

active = !!(data & 0x04)

To, čo som nepochopil je to, prečo sú tam dva výkričníky. Vie to niekto znalý programovania objasniť?
Myslím si, že je to chyba a mal by tam byť len jeden výkričník ako negácia výsledku hodnoty v zátvorke.
Je moja úvaha správna?

Celá konštrukcia je takáto:
/* Read GPIO pin2 as Hardware controlled radio state */
RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &data);
active = !!(data & 0x04);

if (!active)
{
RTMPSetLED(pAd, LED_RADIO_OFF);
*(UINT8 *)pData = 0;
}
else
*(UINT8 *)pData = 1;

Předmět Autor Datum
V JavaScriptu jeden vykřičník provede negaci a zároveň konverzi na boolean. Druhý vykřičník to opět…
Wikan 31.08.2019 17:09
Wikan
Vyzerá to tak, že druhá negácia je tam navyše. Pôvodne to dáva: [root@f24 sys]# rfkill list 0: phy0:… poslední
Kilo.Viktor 31.08.2019 21:47
Kilo.Viktor

Vyzerá to tak, že druhá negácia je tam navyše.
Pôvodne to dáva:
[root@f24 sys]# rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: yes

Po úprave výrazu
active = !(data & 0x04); to dáva:
[root@f24 sys]# rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no

wlan adaptér sa rozbehne, začne skenovať siete a je možné sa normálne prihlásiť.

Zpět do poradny Odpovědět na původní otázku Nahoru