Tôi đang cố gắng tìm giới hạn cho phép đối với số ký tự được in theo printf()
trong tiêu chuẩn C. Tôi chỉ tìm thấy answer trong diễn đàn thảo luận, cho biết INT_MAX
.Printf() - các ký tự in giới hạn
Ví dụ, tôi đã kiểm tra như sau:
#include <stdio.h>
// INT_MAX 2147483647
int main()
{
int x=3;
int y = printf("%2147483647d \n\n", x); --> Confirms INT_MAX ?
// If I change the above to 2147483648, y in set to -1
printf("y = %d\n\n", y);
return 0;
}
Tôi muốn hỏi tại sao printf()
giới hạn bởi INT_MAX
? Bất cứ ai có thể chỉ ra một lý do tiêu chuẩn C hoặc tham chiếu mã nguồn?
Sửa
Câu trả lời gần nhất tôi thấy được cho fprintf()
. Tại link này, trên trang 568, đề cập đến nó (dưới hành vi undefined):
The number of characters or wide characters transmitted by a formatted output
function (or written to an array, or that would have been written to an array) is
greater than INT_MAX.
sẽ ở trên biện minh cho printf()
không?
'printf()' bị giới hạn bởi 'INT_MAX' không đáng ngạc nhiên. Khi nghi ngờ, nó bị giới hạn bởi 'INT_MAX'. –
Nhưng lý do là gì? – Jake
Nó rõ ràng sử dụng 'int' để lưu trữ số lượng ký tự được in. Bạn không thể lưu trữ giá trị lớn hơn 'INT_MAX' trong' int'. –