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)?

0
Smutny Młot napisał(a):

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

Panie a=0 to przypisanie, a nie porównanie.
Czyli jak dasz if (a == 0) to wykona się tylko jak a jest równe 0
A jak dasz a = 0, to będzie przypisywać zmiennej a liczbę 0, nawet jeśli wcześniej miała inną liczbę to zostanie zastąpiona i to są podstawy podstaw, poprzedzajace podstawy.

0

Panie terrorysta czytaj całość, podstawy podstaw przed podstawami w szkole podstawowej to nauka czytania :) chodziło mi o int a = 0 :)

0

Na pewno trolujesz, a ja jestem zwykłym człowiekiem, który próbuje pomóc.

Albo jesteś mega dzieckiem, to ci wybaczę.

Musisz sam sobie sprawdzać co się dzieje, co się wyświetla.
Czytaj sobie np. if wykonuje się jeśli jest prawda.
Potem sobie podstawiaj, ja ci bardziej nie pomogę bo to nie ma sensu, kur jak tak kur prostych rzeczy nie zrobisz to kur tylko dziewczynę znajdziesz.
Bo ci ludzie co to ogarniają to w tych czasach tylko lasek nie mają i nie mogą przetrwać dopóki sami nie zostaną milnonerami albo nie wiadomo co, gdyż dziewczyny patrzą tylko powierzchownie.

0

Cierpliwości to za grosz no i kultury osobistej :P Nie jestem trolem, dzieciakiem też nie. Wystarczyło napisać 0=false, wszystko inne true i zadania rozwiązane w parę sekund. Dziękuję osobom, które się przyczyniły do zrozumienia materiału przeze mnie. Można zamknąć czy wyrzucić.
Pozdrawiam
Karol.

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