Đó là hoàn toàn hợp lệ phải có:
if (0 == var) {}
and
if (null == someObj) {}
Nó nổi tiếng gọi là yoda condition để ngăn chặn sử dụng ngẫu nhiên đơn =
ở vị trí của ==
.
Cá nhân tôi chưa bao giờ sử dụng nó. Nhưng một số người thích nó. Nó thực sự là một vấn đề của hương vị.
Tuy nhiên, nó không được sử dụng trong Java. Bởi vì, một lỗi đánh máy ngẫu nhiên như vậy được bắt tại thời gian biên dịch.
Sau đây sẽ cung cấp lỗi thời gian biên dịch trong Java.
if(var = 0)
{
//Some code
}
Vì thao tác gán không mang lại giá trị Boolean trong Java. Tuy nhiên, trong các ngôn ngữ như C/C++, ở trên là hợp lệ và trình biên dịch sẽ không có lỗi nếu cảnh báo không được kích hoạt. Điều kiện trên if
sẽ luôn luôn đánh giá sai (0) trong C/C++. Vì vậy, nó có thể đi không được chú ý và cho kết quả bất ngờ tại thời gian chạy.
Trong GCC, với tất cả các cảnh báo được kích hoạt, nó sẽ cung cấp cho các cảnh báo cho các bên trên trong C hoặc C++:
warning: suggest parentheses around assignment used as truth value
Vì vậy, đây có thể không sử dụng nhiều trong C/C++ quá là một dự kiến sẽ biên dịch với tất cả cảnh báo và sửa tất cả các cảnh báo. Như tôi đã nói trước đây là sự lựa chọn cá nhân và không tạo ra sự khác biệt nào.
Vì vậy, if (0 == var){}
là cú pháp hợp lệ và giống như if (var == 0) {}
và nếu bạn thích điều kiện Yoda, hãy thực hiện!
Nguồn
2012-12-14 23:17:10
Bạn đã gặp mã C được viết bằng Java. Thay đổi nó thành bất cứ điều gì bạn thích. – EJP
Nếu màu xanh là bầu trời ... –