JavaScript is required

Đầu ra là gì? #include #include int main() { float a = 0.7; if(0.7 > a) printf("Hi\n"); else printf("Hello\n"); getch(); }

A.

Xin chào

B.

Xin chào

C.

Không có đáp án nào ở trên

Trả lời:

Đáp án đúng: A


Trong C/C++, so sánh trực tiếp hai số thực (float hoặc double) bằng toán tử `==`, `>` hoặc `<` có thể dẫn đến kết quả không mong muốn do sai số làm tròn (rounding errors). Kiểu `float` chỉ có độ chính xác hữu hạn. Số 0.7 trong code được hiểu là một số double (do không có hậu tố f), còn `a` là một float. Khi so sánh `0.7 > a`, số `a` sẽ được nâng cấp lên double để so sánh với 0.7. Tuy nhiên, do sai số làm tròn, giá trị double của `a` có thể hơi nhỏ hơn 0.7. Do đó, biểu thức `0.7 > a` có thể đúng. Trong trường hợp này, "Hi" sẽ được in ra. Tuy nhiên, do sai số này phụ thuộc vào trình biên dịch và nền tảng, kết quả có thể khác nhau trên các hệ thống khác nhau. Vì vậy, không có đáp án chính xác trong các lựa chọn đã cho.

Câu hỏi liên quan