Późne odpowiedź, ale postaram się dostać do swojego prawdziwego punktu.
Masz rację. Najprostszym sposobem na podkreślenie jest to, że inne języki maszynowe (takie jak Visual Basic) mają operatorów logicznych, które mogą działać zarówno w wyrażeniach logicznych, jak i całkowitych.
VB lub operator: http://msdn.microsoft.com/en-us/library/06s37a7f.aspx
VB bitowe Przykład: http://visualbasic.about.com/od/usingvbnet/a/bitops01_2.htm
To było bardzo dużo decyzja konstrukcja języka. Java i C# nie musiały być takie, jakimi są. Oni po prostu są tacy, jakimi są. Java i C# rzeczywiście dziedziczyły wiele ze swojej składni z C ze względu na znajomość. Inne języki nie działały i działają dobrze.
Decyzja taka ma konsekwencje. Ocena zwarciowa to jedna. Odmawianie typów mieszanych (co może być mylące dla ludzi do czytania) jest kolejnym. Spodobało mi się, ale może właśnie spoglądałem na Javę zbyt długo.
Visual Basic dodał AndAlso i OrElse jako sposób oceny zwarć. W przeciwieństwie do innych operatorów logicznych działają one tylko na Booleans.
VB OrElse: http://msdn.microsoft.com/en-us/library/ea1sssb2.aspx
opis zwarciem: http://support.microsoft.com/kb/817250
Rozróżnienie nie została wykonana, ponieważ silne typowanie uniemożliwia tylko jeden zestaw operatorów logicznych w języku. Został wykonany, ponieważ chcieli dokonać oceny zwarciowej i chcieli czytelnego sposobu, aby zasygnalizować czytelnikowi, co się dzieje.
Innym powodem (oprócz zwarcia), które C i C++ są różne rodzaje operatorów logicznych to do którychkolwiek niezerowy numer być postrzegane jako PRAWDA zero zinterpretowane jako FAŁSZ. Aby to zrobić, potrzebują operatorów, którzy każą im to zinterpretować.Java odrzuca tę całą koncepcję reinterpretacji i zgłasza błąd w twojej twarzy, jeśli spróbujesz to zrobić za pomocą operatorów logicznych. Gdyby nie była to ocena zwarć, jedynym powodem, dla którego pozostało, byłby po prostu fakt, że chcieli, aby operatorzy wyglądali inaczej, robiąc różne rzeczy.
Więc tak, jeśli projektanci # język Java i C nie dbał o żadnej z tych rzeczy mogliby stosować jeden zestaw operatorów logicznych zarówno mnożenie i logiczną logiki i zorientowali się, które na nie w oparciu o typ argumentu jak niektóre inne języki robią. Po prostu nie.
Patrz na przykład: http://stackoverflow.com/questions/11411907/what-are-the-cases-in-which-it-is-better-to-use-unconditional-and-instead-of – assylias