2009-11-09 30 views
5

pytanie o wypoczynek/ciekawość zgodnie z tytułem.Którego operatora logicznego C++ używasz: i, lub, nie i operatory typu ilk lub C? czemu?

Osobiście wolę nowych operatorów, aby uczynić kod bardziej czytelnym według mnie.

Które z nich używasz? Jaki jest twój powód wyboru jednego nad drugim?

również Emacs podświetla tych operatorów inaczej, więc widzę na ekranie więcej informacji wizualnych. Wiem starzy operatorzy mogą być podświetlone jako dobrze, ale iso646 podświetlone domyślnie

+0

zobacz także: http://stackoverflow.com/questions/1103313/is-anybody-using-the-named-boolean-operators stefaanv

+0

Wow, ja już odpowiedział, że poprzednie pytanie z prawie taką samą odpowiedź! Oznaczono jako oszustwo. –

Odpowiedz

6

Nie będę korzystał z alternatywnych operatorów, ponieważ powodują one więcej zamieszania niż jasność w mojej opinii.
Jeśli widzę alfabetyczną nazwę, oczekuję przestrzeni nazw, klasy, zmiennej, funkcji lub operatora stylu - zwykli operatorzy dzielą to intuicyjnie na sekwencje dla mnie. Alternatywny styl po prostu nie pasuje do świata C/C++.

Ponadto, podczas gdy Greg ma rację co do osób nowych w C lub C++, przyzwyczajasz się do tego całkiem niedługo - nie mam żadnych problemów z dostrzeganiem w dowolnym miejscu !.

2

używam starych.

Powód: I kodowane w Perlu na chwilę, a operatorzy mają różne pierwszeństwo zależności od tego czy są one orkisz-out wariant czy nie. Z tego powodu natknąłem się na kilka błędów i od tego czasu zawsze używam &&, || i ! zamiast wariantu ortograficznego dla dowolnego języka, który je posiada.

+0

PHP ma również te problemy. Zastąpienie '($ a lub $ b)' z '($ a || $ b)' naprawiło błąd, w którym to momencie miałem już dość języka. – Tom

3

Czy odwołując się do alternatywnych żetonów pochodzących z iso646.h?

Są z C i to jest bardzo rzadkie, aby zobaczyć, więc prawdopodobnie będzie mniej czytelny przez większość. Jestem pewien, że gdybyśmy zostali "podniesieni" tymi słowami kluczowymi, byliby bardziej popularni, ponieważ lepiej czytają angielski.

Potem znowu, && pozwala non-Anglików powiedzieć „i” w swoim ojczystym języku. (Nie, że jest to problemem w słowa kluczowe w pierwszej kolejności).

+0

Ale ciso646.h zawiera ... nic? –

+0

Co? Dla mnie, Visual Studio 2008, oczekuje oczekiwanego '#include ', który ma makra. Jestem pewien, że g ++ jest taki sam. – GManNickG

+0

'' w C zawiera 'i', 'i_eq', itp. Jako makra, ale' '(zgodnie z dodatkiem C do standardu) powinno wykluczać makra' i ',' i_eq' itp., Ponieważ są one słowa kluczowe w C++, czyniąc '' najbardziej bezużytecznym nagłówkiem w standardzie (IMHO). VS jest znany z tego, że jest niezgodny w tym zakresie, więc może wyjaśnić, co to jest plik nagłówkowy. –

8

wolę używać not zamiast ! ponieważ jest dużo bardziej czytelny:

if (not condition()) { 
} 

kontra

if (!condition()) { 
} 

W pewnym momencie zagubił się tam rodzaj. Oczywiście należy tego unikać (lub #define) podczas pisania kodu przeznaczonego do przenoszenia.

Jednak, and i or nic dla mnie nie robią, więc ich nie używam.

+15

'if (not condition())' jest bluźnierczym obrzydliwością z piekła. –

+0

Nie zgadzam się z czytelnością. Ale to dlatego, że jestem tak przyzwyczajony! operator. Wyszkolenie mojego mózgu do czytania jako operatora nie jest trywialne w moim wieku. –

+0

Lubię używać 'not',' i', 'lub', nawet więcej, ponieważ pracuję z pythonem. Emacs domyślnie je podświetla, uważam, że 'not' jest szczególnie czytelny i są one szybsze do wpisywania IMO. – rafak

11

nie sądzę Mam kiedykolwiek widział nawet C C++/kod źródłowy, który faktycznie korzysta z alfabetu operatorów. Dla mnie to po prostu wygląda dziwnie; bardzo un-C-ish.

+4

Nigdy nie wiedziałem, że istnieją aż do teraz. –

1

Alternatywne tokeny dla logicznych (i nie tylko) operatorów, takich jak and, or, not itp. Nie mają nic wspólnego z C++ specjalnie. Byli też obecni w C, praktycznie od samego początku. Jeśli chcesz je wykorzystać w swoim kodzie, możesz to zrobić, ale nie zdziw się, jeśli ludzie uznają tę praktykę za raczej niekonwencjonalną. Zwykle ludzie używają tradycyjnych desygnatorów dla tych operatorów (na przykład &&, || itd.) W obu kodach C i C++.

+3

Nie "i", "lub", "not" itp. Są specyficzne dla C++. Są to _keywords_ w C++. Nie możesz się obyć bez nich. Są to standardowe makra w języku C, ale jeśli nie zawierają one , ich nie otrzymasz. –

+0

Cóż, nie chcę wznawiać debaty bitej na śmierć o to, czy alternatywne tokeny są słowami kluczowymi, czy nie. Moim zdaniem, sformułowanie normy (przynajmniej C++ 98) jest całkiem jasne: są * nie * słowami kluczowymi. Chociaż prawdą jest, że nie są to makra w C++. – AnT

+0

Przepraszam, masz rację, to nie są słowa kluczowe, to są alternatywne tokeny. Tak czy inaczej, są specyficzne dla C++ (jako przeciwstawne C, gdzie są zdecydowanie makrami). –