30/09/2018, 18:38
Cần giải thích code cho newbie
Chào các bạn, mình là newbie tìm hiểu lập trình C. Mình có thắc mắc muốn hỏi các sư phụ về bài tính bình phương:
#include <stido.h>
void main()
{
int a, square;
printf("
Nhap vao so nguyen: ");
scanf("%d",&a);
square = a*a;
printf("
Gia tri binh phuong: %d",square);
return 0;
}
Vấn đề là khi mình nhập a = 32767 thì square vẫn tính ra giá trị đúng. Tuy nhiên theo mình được biết thì kiểu int chỉ từ -32768 đến 32767, mà ở đây square vượt ra ngoài phạm vi đó. Thậm chí mình nhập a = 32768 thì kết quả vẫn ra đúng. Mình xài CodeBlocks. Có bạn nào biết giải thích hộ mình với! Thanks!
Bài liên quan
Bạn hiểu nhầm rồi, kiểu
int
không cố định mà phụ thuộc vào kích thước dữ liệu của CPU và compiler.ví dụ, CPU 32-bit thì kiểu
int
thường là 32-bit (ngày nay kiểu thường int là 32 bit).nên giá trị của nó từ
−2,147,483,648 --> 2,147,483,647
.Bạn tham khảo thêm ở đây:
stackoverflow.com
Does the size of an int depend on the compiler and/or processor?
Cám ơn bạn Đúng là còn có nhiều thứ mình phải tìm hiểu thiệt.
thông thường thì khi viết hàm void thì ko cần giá trị trả về bạn nhé