30/09/2018, 21:29

Ký tự chuyển dạng trong C

Em có chương trình sau:

#include <stdio.h>

int main(void) {
	int x = 10;
	long long y = 3478925;
	printf("
%lli
%i", x, y);
	return 0;
}

Em chạy được x = 14941869100236810, y = 0
Theo em được biết thì em đang dùng ký tự chuyển dạng sai. Nhưng mà em lại không hiểu tại sao lại ra kết quả như vậy. Mong các anh chỉ giáo. Thanks!

Trương Quang Hiếu viết 23:35 ngày 30/09/2018

Bạn sửa
%lli thành %lld

%i thành %d
Kết quả:
printf("\n%d\n%lld",x,y);

Nguyễn Tấn Khoa viết 23:46 ngày 30/09/2018

Dù i hay d thì giá trị in ra vẫn là kiểu số nguyên hệ 10 có dấu 4 bytes . Và lld với lli cũng tưởng tự. Ý của mình là giá trị của biển nguyên có dấu 4 bytes: x = 10 dùng đặc tả là số nguyên có dấu 8 bytes là lli hay lld thì tại sao in ra kết quả như trên.

Bài liên quan
0