2012-04-08 43 views
9

Trong C, tôi có thể viết một if-tuyên bốSử dụng một Bitwise & bên trong một câu lệnh if

if (firstInt & 1) 

nhưng khi tôi cố gắng và làm tương tự trong Java, trình biên dịch nói với tôi "loại không tương thích" và nói rằng tôi cần boolean thay vì int. Có cách nào để viết mã C trong Java?

+3

Lý do hoạt động trong C/C++ là các ngôn ngữ diễn giải các biểu thức bên trong các điều kiện bằng cách so sánh hoàn toàn các kết quả của chúng với 0. Java là rất nghiêm ngặt trong lĩnh vực này, đòi hỏi một biểu thức boolean trong các điều kiện. – dasblinkenlight

+0

Nó không chỉ tiềm ẩn; C thậm chí không _have_ một loại boolean. – Taymon

+0

@Taymon C có kiểu boolean '_Bool' và macro' bool' trong 'stdbool.h' mở rộng thành' _Bool' – ouah

Trả lời

22

Bất kỳ những điều sau đây nên làm việc cho bạn:

if ((firstInt & 1) != 0) 
if ((firstInt & 1) > 0) 
if ((firstInt & 1) == 1) 
+0

+1. Cũng có thể làm '(firstInt & 1) == 1'. –

+3

Xin lưu ý rằng các parens (mà tôi đã thêm) là cần thiết cho tính chính xác. Trong Java, các toán tử so sánh ràng buộc chặt chẽ hơn các toán tử bitwise nhị phân. – Taymon

+0

Cảm ơn bạn đã làm việc này. Tôi sẽ chấp nhận câu trả lời của bạn ngay khi nó cho phép tôi. – user1310650

1

Trong C một biểu thức số nguyên có thể được sử dụng mặc nhiên như một biểu thức boolean (mặc dù tôi cho rằng đó là một ý tưởng tồi), nơi không là sai và bất kỳ giá trị khác không là đúng.

Trong Java không được phép, do đó bạn phải làm cho biểu thức rõ ràng boolean bằng cách so sánh kết quả nguyên với một số giá trị nguyên hoặc biểu thức khác bằng toán tử so sánh.

Các vấn đề liên quan