What is the results will be displayed on the screen after executing the following code:

4 phương ánCó giải thích
Đề bài
int a[] = {1,2,3,4};
int i, s = 0;
for (i=0; i<4; ++i)
    s += a[i];
printf("%f", (float)(s/4));

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "2.000000". Vòng for cộng dồn 1, 2, 3, 4 vào s nên s bằng 10; cả s và 4 đều là số nguyên nên s/4 là phép chia nguyên, cho 2 chứ không phải 2.5, phần dư bị cắt ngay tại đó. Phép ép kiểu sang float chỉ tác động lên con số 2 đã mất phần dư, biến nó thành 2.0, và đặc tả %f in số thực với sáu chữ số sau dấu thập phân nên màn hình hiện 2.000000. Giá trị "2.5" là kết quả nếu ép kiểu trước khi chia, nhưng ngay cả khi đó %f vẫn in thành 2.500000 chứ không in gọn một chữ số. Giá trị "2" là con số đúng của phép chia nguyên nhưng ứng với cách in bằng %d. Giá trị "2.500000" đúng khuôn in của %f nhưng vẫn cần một phép chia thực, điều không xảy ra khi hai toán hạng đều là số nguyên.

Cùng phần 2

Xuất hiện trong 1 bộ đề