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;
}
Pham Van Hai viết 22:46 ngày 30/09/2018

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,647

anon51853234 viết 22:42 ngày 30/09/2018

dạ , 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

Sáng Béo viết 22:37 ngày 30/09/2018

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,647

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?

Pham Van Hai viết 22:45 ngày 30/09/2018

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.

Bài liên quan
0