k
kjnk: ktoś rzuci okiem? prosty kod
k=20;
if(k=0)
k/=10;
else
k/=2;
ile wynosi k? co oznacza w tym przypadku if(k=0)?
1 lut 13:54
Draghan: Jeśli to C, k = 0. Warunek if(k=0) "robi" dwie rzeczy:
1) przypisuje zmiennej k wartość zero (pojedyncze "=")
2) jest fałszywy − wszystkie wartości niezerowe są prawdą, zaś akurat tam k jest zerowane.
| 0 | |
Wykona się linia k /= 10, ale nie zmieni ona wartości zmiennej, bo |
| = 0. |
| 10 | |
1 lut 13:58
kjnk: jeśli if jest fałszywy to czemu w takim przypadku nie wykonuje się else
1 lut 14:00
Draghan: Sorki, to miałem napisać.
Wybacz, jestem po nocce przy książkach.
Ale to i tak nie zmieni wartości zmiennej.
1 lut 14:01
kjnk: czyi gdyby if wyglądał inaczej, np.:
k=20;
if(k=15)
k/=3;
else
k/=5;
k=5 .. dobrze rozumiem?
1 lut 14:05
Draghan: Dobrze, pod warunkiem, że oczywiście to jest C/C++?
1 lut 14:06
kjnk: Tak tak
i jeszcze mam jedno pytanie, co w takim kodzie oznacza pojedynczy &, a co &&?
czy b= a && b oznacza iż zarówno a i b muszą być różne od 0? a co daje nam pojedynczy?
a=5; b=0; c=1;
if(b=2) c = a++ & b;
else a=4;
b = a && b;
1 lut 14:07
Draghan: Obydwa operatory odnoszą się do koniunkcji.
Operator && to operator logiczny, oznaczający tyle, co "oraz".
Stosuje się go w wyrażeniach logicznych − traktuje swoje argumenty jak wartości logiczne no i
sam taką wartość zwraca. Linijka b = a && b sprowadza się do zamiany zmiennych do typu
logicznego, czyli true lub false.
Operator & to operator bitowy "and". Operuje bezpośrednio na reprezentacji bitowej − czyli
można powiedzieć, że zamienia swoje argumenty na system dwójkowy i porównuje obydwa "pozycja
po pozycji", tam gdzie obie są "1", daje "1", gdzie indziej daje "0" i zwraca tak "złożoną"
liczbę. Najlepiej pokazać na przykładzie:
1101100
1001111 &
_______
1001100
1 lut 14:18
jakubs: "&&" to koniunkcja, czyli operator logiczny.
1 lut 14:18
kjnk: @Draghan
i czego sobie jeszcze życzysz! dzięki wielkie!
1 lut 14:25
Draghan:
To jeszcze pytanie kontrolne: podaj liczbową wartość zmiennych a i b.
a = 5 && 0;
b = 1 & 2;
1 lut 14:29
kjnk:
a=0, bo 5 to true, 0 to false, a żeby było 1 obie wartości musiałyby być ≠0
b=0, bo 0001 & 0010 = 0000
1 lut 14:38
Draghan: Super.
1 lut 14:46