What will this print? float a = 5 / 2; printf("%.1f", a);
4 phương ánCó giải thích
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "2.0". Biểu thức 5 / 2 chỉ gồm hai hằng số nguyên nên trình dịch dùng phép chia nguyên, cho 2 và bỏ phần dư; kiểu của biến đích không quay lại ảnh hưởng cách tính biểu thức bên phải, đây là chỗ bẫy của câu hỏi. Giá trị 2 sau đó mới được nâng lên float thành 2.0, và %.1f in một chữ số sau dấu chấm nên màn hình hiện 2.0. Muốn có phép chia thực phải để ít nhất một toán hạng là số thực, chẳng hạn viết 5.0 / 2. Số "2.5" là kết quả của phép chia thực, chỉ xuất hiện khi đã có toán hạng thực. Số "2" là cách in một số nguyên bằng %d, còn %.1f luôn kèm dấu chấm và một chữ số. Số "3.5" không ứng với cách tính nào của 5 chia 2, dù chia nguyên hay chia thực.
Cùng phần 2
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây