Vì sao kết quả in ra là 0
Chương trình C của mình như sau:
include "stdio.h"
include "conio.h"
main()
{
int a=7, b=3;
float c=a/b;
printf("%d", c);
getch();
}
Em đang học C, C++ phần ép kiểu(Type Casting). Theo em nghĩ chương trình trên sẽ chạy như sau:
a, b là kiểu integer chiếm 4 bytes trong bộ nhớ. c là kiểu float(thực) chiếm 4 bytes trong bộ nhớ. %d là định dạng kiểu số nguyên có dấu(link tham khảo: http://www.cplusplus.com/reference/cstdio/printf/). Em nghĩ sẽ in ra màn hình giá trị của c là 2. Vậy mà mọi trình biên dịch(compiler) đều cho kết quả là số 0 tròn trĩnh. Mong mọi người giải thích dùm em. Em cám ơn trước!
int main()
vì 1 số compiler không chấp nhậnmain()
."%d"
bằng"%f"
thì kết quả ra2.00000
. Mình thử thêm dòngprintf("%d\n", 2.0003);
thì mình nhận được một số khá khủng khiếp. Hình như C++ trả về giá trị rác/hoặc 0 khi chỉ dẫn chỉ thị số sai cho biến, kiểu như c kiểu float mà cho chỉ thị “%d” của số nguyên.printf("%d", (int)c);
. Đây chính là phép cast (ép kiểu).