30/09/2018, 20:31
nhập số vượt quá miền giá trị kiểu int vẫn tính đúng
mọi người cho em hỏi , em có 1 đoạn code chuyển 1 số trong khoản từ 0-86399 ra giờ:phút:giây , nhưng khi khai báo số nhập vào loại dữ liệu int thì nó vẫn chạy đúng và không báo lỗi trong khi miền dữ liệu của int - 32768 . 32767 , ai có thể giải thích cho em đc không , đáng lẻ phải dùng long mới đúng chứ
#include <stdio.h>
int main()
{
long n;
int h,p,s;
do{
printf("nhap vao so n ");
scanf("%ld",&n);
if(n<0){
printf("nhap lai n > 0");
}
}
while(n<0);
printf("so %ld ",n);
h=n/3600;
n=n%3600;
p=n/60;
s=n%60;
printf("quy doi thanh %d:%d:%d",h,p,s);
return 0;
}
Bài liên quan
Thông thường trên các máy tính/compiler/Hệ điều hành hiện đại thì kiểu
int
có kích thước 4 bytes: -2,147,483,648 -> +2,147,483,647dạ , em cảm ơn anh . lúc em nhập vào 1 số cực lớn thì nó cũng lấy giá trị cao nhất là 2043514879
mình không hiểu sao họ có thể thay đổi int từ 2btye lên 4btye được nhỉ?
và kiểu char có còn là 1 byte?
Theo mình biết riêng kiểu
int
có kích thước phụ thuộc vào compiler/platform. Còn các kiểu khác thì có kích thước cố định.