像Java和C#這樣的語言既有按位又有邏輯運算符。爲什麼Java和C#中的邏輯運算符和按位運算符有區別?
邏輯運算符只對布爾操作數有意義,按位運算符也用於整數類型。由於C沒有布爾類型並將所有非零整數視爲true,所以邏輯運算符和位運算符的存在都是有意義的。但是,像Java或C#這樣的語言具有布爾類型,因此編譯器可以根據類型上下文自動使用正確類型的運算符。
那麼,在這些語言中同時使用邏輯運算符和按位運算符有一些具體的原因嗎?還是因爲熟悉的原因而被包含在內? (我知道你可以在布爾上下文中使用「按位」運算符來規避Java和C#中的短路,但是我從來不需要這樣的行爲,所以我想它可能是一個大部分未使用的特殊情況下)
請參閱示例:http://stackoverflow.com/questions/11411907/what-are-the-cases-in-which-it-is-better-to-use-unconditional-and-instead-of – assylias