Giải đáp về điều kiện hàm if-else trong ngôn ngữ C

Giải đáp điều kiện if-else trong ngôn ngữ C

Hỏi đáp CNTT 04/12/2021

If-else trong C. Tại sao điều kiện if-else trong ngôn ngữ C không sử dụng giá trị hoạt động của điều kiện mà sử dụng biến bên trái sau khi thiết lập?

Hỏi: Trong ngôn ngữ C, kết quả x=0 đạt được là gì nếu tôi đặt nó trong điều kiện if-else? Nếu nó là đại diện false hoặc nếu nhiệm vụ này kết thúc, sau đó đại diện true? Tại sao điều kiện if-else trong ngôn ngữ C không sử dụng giá trị hoạt động của điều kiện mà sử dụng biến bên trái sau khi thiết lập?

Trả lời:

1. Thông tin về yêu cầu giải đáp điều kiện if-else trong ngôn ngữ C

If-else trong ngôn ngữ C

Đồng nghiệp của tôi viết câu lệnh như sau:

if(condition = 0)

{

    //do process A

}

else

{

    // do process B

}

Thực rõ ràng, câu lệnh là sai, tôi biết nó phải được viết như vậy condition == 0 hoặc ((condition=foo()) == 0). Nhưng giả định của tôi là chương trình nên luôn thực hiện quy trình A vì tôi nghĩ rằng if(condition = 0) phải luôn trả về true vì giá trị này được đặt thành 0 biến condition và quy trình đặt này phải đúng. Tuy nhiên, chương trình luôn thực hiện quy trình B, điều đó có nghĩa là if sử dụng condition giá trị biến và giả định của tôi là sai.

Sau đó, tôi đã thực hiện một phiên bản thử nghiệm khác như dưới đây:

if(condition = 2) //or other none-zero value

{

    //do process A

}

else

{

    // do process B

}

Sau lần này, chương trình luôn thực hiện quá trình A. Tại sao điều kiện if-else không sử dụng giá trị hoạt động của điều kiện mà sử dụng biến bên trái sau khi thiết lập?

2. Giải đáp thắc mắc về điều kiện if-else trong ngôn ngữ C

2.1. Gán x=0 cho điều kiện biến if-else trong ngôn ngữ C

Điều kiện If-else trong ngôn ngữ C

Khi bạn gán 0 cho điều kiện biến, nó sẽ trở thành false0 đại diện cho false và bất kỳ giá trị nào khác 0 đại diện cho true. Vì vậy, khi bạn gán 0 điều kiện khác được thực thi và khi bạn gán 2 điều kiện đại diện cho một câu lệnh đúng, vì vậy, câu lệnh thực thi. 

if(condition = 0)   

Sau khi gán giá trị 0 cho điều kiện nó sẽ trở thành:

if(condition)   

Vì nó là false, câu lệnh không thực thi. Nhưng khi điều kiện = 2, nó hoạt động theo cách tương tự và trở thành true. Do đó, điều kiện if được thực thi sau đó.

2.2. Gán x=2 cho điều kiện biến

If-else trong ngôn ngữ C

Trong ngôn ngữ C, phép gán là một biểu thức trả về giá trị đã đặt; tức là x = 2 sẽ cho kết quả là 2.

Điều này cho phép bạn thực hiện điều gì đó như sau:

unsigned char ch;

while((ch = readFromFile(f)) != EOF) {

    // do something with ch

}

Câu lệnh cũng cho phép bạn sửa và thay đổi nếu bạn vô tình nhập nhầm  ==  như =, vì vậy lý do này không xuất hiện trong nhiều ngôn ngữ khác.

Trong vòng lặp đầu tiên của bạn, biểu thức condition = 0 sẽ luôn dẫn đến kết quả 0 là else nhánh được lấy. Tương tự, condition = 2 dẫn đến kết quả 2 là nhánh thực được lấy.

Như vậy, với các bài toán điều kiện if-else trong ngôn ngữ C này, bạn có thể gán giá trị để giải các câu lệnh. Trong ngôn ngữ C, tùy thuộc vào đề ra bạn viết câu lệnh và gán giá trị cho phù hợp.

Để tìm hiểu về các khóa công nghệ thông tin, dễ dàng hơn trong công tác giải các hàm trong toán. FUNiX là lựa chọn tốt cho bạn. Là đơn vị chuyên đào tạo học viên cử nhân, chứng chỉ với các mảng chuyên sâu về CNTT. FUNiX là cơ hội giúp người học nắm bắt được các kiến thức phong phú, chủ động và hiệu quả. Phương pháp học thông minh, kích thích sự phát triển tiềm ẩn của các học viên tham gia. Đặc biệt, chương trình học lập trình online của FUNiX giúp bạn vừa tiết kiệm thời gian, vừa tiết kiệm chi phí học. 

Bài gốc: https://stackoverflow.com/questions/26395548/if-else-condition-in-c

>>>  Tìm hiểu ngay các khóa học lập trình của FUNiX tại:

>>> Xem thêm nhiều hơn bài viết tại đây:

Nguyễn Vân Anh (theo Stack Overflow) 

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại