Operacje logiczne

0

Cześć, z góry zaznaczam, jeżeli zły dział to proszę o przeniesienie. Szukałem rozwiązania na forum lecz nie znalazłem.
Pojawił się u mnie taki problem:

int a = 1;
int b = 0;

if(a!=b){
b=a+1;
}else if(a){
if(b<=a)
a=2-a;
b=a;
}
if(!a)
b=2*a;
a=a+b

co oznacza samo !a albo samo a? Nie proszę o rozwiązanie tego fragmentu kodu ale o wytłumaczenie bo mam zagwozdkę
Pozdrawiam forumowiczów.

0

Wiesz w ogóle co to są operacje logiczne, a np. bitowe?

bitowe to coś ala system dziesiętny lub binarny.
A logiczne to tylko prawda i fałsz.

Czyli jeśli 0 to true, a wszystko inne false, to w tym przypadku !a gdy a = 1, a 1 to false to wiadomo, że true będzie.

0

@up
Nie zrozumiałeś mnie... inne liczby niech będą, np. a=-3 a b=-2
Jak w takim przypadku?

0

a to zmienna typu int.
W warunku a zwróci prawdę, jeżeli będzie różne od 0.

! to operator logiczny. Jeżeli napiszesz !a, to a będzie potraktowane jako true/false i całe wyrażenie zwróci odpowiednio false/true, bo ! jest negacją.
Nie ma znaczenia jakie tam są liczby, liczy się czy jest równa zero czy różna od zera.

0

Panowie, ja chce tylko się dowiedzieć co to znaczy !a. Wiem, że ! to operator logiczny, negacja. Ale co to znaczy w tym warunku a!, negacja a. Jaka negacja? Skoro liczby nie mają znaczenia. i co to znaczy if(a) ?

0

Panie, jest taki problem, że kompilatory robią tak: 0 - true, wszystko inne - false lub 0 - false, a wszystko inne true.
Nikt nie wie jak to ma wyglądać, ale instrukcja if wykonuje się jeśli jest true.

Czyli musisz zbadać swojego kompilatora, środowisko w jakim pracujesz.

Jak takie coś zbadać?
Musisz podstawiać jakieś wartości i sprawdzać co się wydarz, to najłatwiejszy sposób, albo przeczytać co jest czym.

Logicznych operacji masz mało
&& - operacja and - po polsku masz zrobić to i to.
|| - operacja or - musisz zrobić to lub to
! - negacja - jak kobieta ci powie, że możesz robić co chcesz, to znaczy, że nic nie możesz zrobić.
^ - operacja xor - możesz zrobić jedno z tych dwóch, ale nigdy obydwóch, ani żadnego.

0

@carlosmay: szach mat, wyprzedziłem cię :)

0

Dobra, jak coś jest np. zmienna a != b to znaczy po prostu, a nie jest równe b, lub a jest różne od b tzn. a <> b

0

@carlosmay: Istnieje taka kombinacja, ale masz rację nie znam i nawet w pewnym momencie nie wiedziałem, jak normalnie to występuje i dałem obydwa żeby nie było, że nie trafiłem ani razu.

0

Ok, czyli jak a=0 to wykona sie else if(a). Zrozumiałem. Ale Dlaczego wykona się również if(!a)?

1 użytkowników online, w tym zalogowanych: 0, gości: 1