2012-04-20 33 views
6

Đây chỉ là vì tò mò tôi hỏi ...Nếu (rvalue == vế trái)

99% của mã tôi thấy bất cứ nơi nào, khi sử dụng "IF", sẽ được định dạng "Nếu (rvalue = = LValue) ... ". Ví dụ:

If (variableABC == "Hello World") ... 

Có những ví dụ khác, nơi tôi thấy điều ngược lại:

If ("Hello World" == variableABC) 

Bất cứ ai cũng biết làm thế nào này bắt đầu và lý do tại sao nó được thực hiện?

+0

Vì những gì đang xảy ra ở đây là một thử nghiệm bình đẳng, nó không quan trọng giá trị nào ở hai bên của '==', vì nếu 'a == 'b'' thì '" b "== a' cũng phải đúng. Tôi tưởng tượng kịch bản đầu tiên được thực hiện để ngăn chặn chuyển nhượng khi bạn sử dụng '=' thay vì '==' trên tai nạn. –

+0

Các biểu thức này được gọi là "Biểu thức Yoda", xem http://wiert.me/2010/05/25/yoda-conditions-from-stackoverflow-new-programming-jargon-you-coined/ –

Trả lời

3

Nó được thực hiện vì sai lầm này trong C và C++:

if (variableABC = "Hello World") ... 
       ^
       (Watch here) 

Bằng cách này chúng ta có một lỗi biên dịch:

if ("Hello World" = variableABC) 
       ^
        (Watch here) 

Ví dụ, C# và Java ngôn ngữ không cần điều này lừa.

+0

Tuyệt vời: trước khi tôi được phép để đánh dấu câu trả lời, đã có 3 câu trả lời. – KurtisLininger

2

Sau này được thực hiện để ngăn chặn nhiệm vụ ngoài ý muốn, nếu bạn, do nhầm lẫn, sử dụng toán tử gán = thay vì các nhà điều hành bình đẳng == '

Một số ngôn ngữ không cho phép chuyển nhượng trong một điều kiện if-, trong đó trường hợp là tốt.

Trong các ngôn ngữ chấp nhận các bài tập trong điều kiện, tôi luôn thích sử dụng với trường hợp sau.

1

Điều này được thực hiện vì các nhà phát triển lỗi thường viết văn bản = thay vì ==. Trong C++ số nguyên có thể được coi là booleans và bạn không có lỗi tại thời gian biên dịch.

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