Trường hợp sử dụng bộ nhận dạng lớp lưu trữ tự động? Tôi hiểu rằng tất cả các biến cục bộ được tự động theo mặc định. Nhưng whats làm cho sự khác biệt bằng cách viết một cách rõ ràng tự động int a?Sự khác biệt giữa các biến cục bộ auto int a và int a là gì?
Trả lời
Hoàn toàn không có sự khác biệt.
{
auto int a;
/* ... */
}
và
{
int a;
/* ... */
}
là tương đương.
Thông lệ chung là không đặt thông số auto
.
Tôi có thể tìm thấy điều này mọi nơi sau đó nó có nghĩa là không có ý nghĩa đặc biệt của từ khóa tự động. – vkesh
@vkesh Điều đó đúng cho C. "' auto' "có nghĩa là" không phải 'tĩnh'", là mặc định. Nó có ảnh hưởng nhiều hơn trong người tiền nhiệm B. http://en.wikipedia.org/wiki/B_(programming_language) –
cảm ơn rất nhiều vì đã chia sẻ liên kết. – vkesh
Có hai trường hợp có thể:
auto
là mặc định, và thêm một cách rõ ràng từ khóa hoàn thành không có gìauto
không được phép (ví dụ, trên một biến toàn cục) trong trường hợp này thêmauto
ngăn chặn mã từ biên soạn
Ý của bạn là do trường hợp thứ hai có thể xảy ra nếu chúng ta thêm tự động vào biến toàn cục, ngăn biến toàn cầu được định nghĩa? Nếu vậy thì usecase nếu bạn biết gì? – vkesh
@vkesh: Tôi đang nói nếu bạn cố gắng chỉ định 'tự động' cho biến toàn cục, mã sẽ không biên dịch (với trình biên dịch hoạt động đúng cách). Theo như "trường hợp sử dụng" là gì, quan điểm của tôi là không có gì. –
cảm ơn rất nhiều vì đã làm rõ. – vkesh
Trong ngày hiện tại C (C89, C99, C11), từ khóa auto
là không cần thiết. Khác với mục đích làm rõ ràng ("Đây là một biến không tĩnh, và tôi có nghĩa là nó!"), Nó phục vụ không còn bất kỳ mục đích. Đó là một phần còn lại của lịch sử C, được chuyển từ B, nhưng giống như từ khóa entry
đã trở nên lỗi thời thực tế.
Tôi đã sử dụng nó một lần trong đời. Đó là mục nhập IOCCC kết hợp với int ngầm định:
drive() { auto motive; ... }
- 1. Sự khác nhau giữa double a = a + int b và int a + = double b là gì?
- 2. Có sự khác biệt giữa int & a và int & a không?
- 3. Sự khác biệt giữa "new A()" và "A.newInstance()" là gì?
- 4. Sự khác biệt giữa "a là b" và "id (a) == id (b)" trong Python là gì?
- 5. Sự khác biệt giữa "a" và "a: link"
- 6. sự khác biệt giữa int * i và int * i
- 7. Sự khác biệt thực sự giữa "int" và "unsigned int"
- 8. Trong C++, sự khác nhau giữa static_cast <double> (a) và double (a) là gì?
- 9. Sự khác biệt giữa int * ptr và int * ptr trong C là gì?
- 10. Sự khác biệt giữa int * i và int ** i
- 11. int a = (int) ((0,7 + 0,1) * 10). Tại sao a = 7?
- 12. Sự khác nhau giữa int x = 1 và int x (1) trong C++ là gì?
- 13. Sự khác biệt về PHP giữa int và số nguyên
- 14. Sự khác nhau giữa 'a và' _l là gì?
- 15. Sự khác nhau giữa $ a và $$ a trong php là gì?
- 16. Điều này có nghĩa là gì? (int &) a
- 17. khác biệt giữa A aaa; và A aaa();
- 18. Sự khác nhau giữa int (* p) [3] và int * p [3] là gì?
- 19. Giải thích int (* a) [3]
- 20. Tại sao "a + 1" và "& a + 1" cho kết quả khác nhau khi "a" là một mảng int?
- 21. sự khác nhau giữa 'Float a = 3f' và 'Float a = 3.0' trong java là gì?
- 22. Sự khác biệt giữa [:] = b và a = b [:]
- 23. Sự khác nhau giữa việc sử dụng int [] [] và int [,] là gì?
- 24. Sự khác nhau giữa int [] array và int array []
- 25. Sự khác biệt giữa $ a = 0 và $ a = '0' trong PHP
- 26. Sự khác biệt giữa regex [A-z] và [a-zA-Z]
- 27. Sự khác biệt giữa int, NSInteger và NSUInteger
- 28. C: sự khác biệt giữa (int) x và tầng (x)?
- 29. Sự khác biệt giữa dài và int trong C#?
- 30. Sự khác nhau giữa "int ngắn" và "int" trong C là gì?
Có thể trùng lặp của [Từ khóa tự động C được sử dụng ở đâu?] (Http://stackoverflow.com/questions/2192547/where-is-the- c-auto-keyword-used) –