1

Téma: [vyřešeno] Operátor &&

V SDS-C špatně funguje operátor  &&. Viz následující příklad. První varianta podmínky nefunguje i když by logicky měla. Druhá varianta funguje.

main {
    var a, b;
    a = 100;
    b = 2;
    
    if ( (a == 100) && (b & 0b10) ) {
        echo('Toto nefunguje ale melo by.');
    }

    if ( (a == 100) && (b & 0b10 > 0) ) {
        echo('OK, funguje');
    }

    end:
    goto end;
}

2

Re: [vyřešeno] Operátor &&

Ono to vypadá, že logický AND, tedy &&, se chová jako bitový &.
Všechny níže uvedené výrazy by podle mne měly vracet buď logickou 1 a nebo alespoň číslo větší jak nula.

1 && 1 = 1
2 && 1 = 0
3 && 1 = 1
4 && 1 = 0
1 && 2 = 0
2 && 2 = 2
3 && 2 = 2
4 && 2 = 0

3

Re: [vyřešeno] Operátor &&

Přesně tak to doteď bylo v simulátoru - operátor && prováděl bitový součin, místo pouhého porovnání zda-li jsou obě strany operátoru nenulové. To bylo dneska v simulátoru (SDSC.exe) opraveno. Podobně i pro operátor ||.

Upravená verze (SDSC.exe 30.8.2015) je ke stažení na WiKi.

Pro SDS-C interpreter v zařízení je oprava vydána a můžete ji otestovat v rámci BETA firmware (viz konkrétní vlákno tohoto fóra).

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

4

Re: [vyřešeno] Operátor &&

Jestli to chápu správně tak chyba byla nejen v simulátoru ale i ve vlastním zařízení nebo iinterpreteru a následně byla opravena ?
Jestli ano tak prosím takové zásadní opravy udávat v Change logu.

5

Re: [vyřešeno] Operátor &&

Ano jednalo se o chybu ve firmware, která byla ve firmware i opravena (viz updaty z roku 2015).
Teď je už vše správně, tak jak to mělo od začátku být.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !