autolà một từ khóa C cũ có nghĩa là "phạm vi địa phương". auto agiống như auto int avà bởi vì phạm vi cục bộ là mặc định cho một biến được khai báo bên trong hàm, nó cũng giống như int atrong ví dụ này.
Từ khóa này thực sự là một phần còn lại từ tiền thân B của C, nơi không có loại cơ sở: mọi thứ là int, con trỏ tới int, mảng của int. (*) Tuyên bố sẽ là autohoặc extrn[sic]. C được thừa hưởng "mọi thứ là int" như một quy tắc mặc định, vì vậy bạn có thể khai báo các số nguyên với
auto a;
extern b;
static c;
ISO C đã loại bỏ điều này, nhưng nhiều trình biên dịch vẫn chấp nhận nó để tương thích ngược. Nếu nó có vẻ lạ lẫm, thì bạn nên nhận ra rằng một quy tắc liên quan đang hoạt động
unsigned d; // actually unsigned int
mà vẫn còn phổ biến trong mã hiện đại.
C ++ 11 đã sử dụng lại từ khóa, mà ít có bất kỳ lập trình viên C ++ nào đang sử dụng với nghĩa gốc, cho kiểu suy luận của nó. Điều này chủ yếu là an toàn vì intquy tắc "mọi thứ là " từ C đã bị loại bỏ trong C ++ 98; điều duy nhất bị phá vỡ là auto T a, điều mà không ai đang sử dụng. (Ở đâu đó trong các bài viết của mình về lịch sử của ngôn ngữ , Stroustrup bình luận về điều này, nhưng tôi không thể tìm thấy tài liệu tham khảo chính xác ngay bây giờ.)
(*) Xử lý chuỗi trong B rất thú vị: bạn sẽ sử dụng mảng intvà đóng gói nhiều ký tự trong mỗi thành viên. B thực sự là BCPL với cú pháp khác nhau.
intđã bị xóa khỏi tiêu chuẩn C vào năm 1999.