Hôm nay trong cuộc phỏng vấn của tôi, người phỏng vấn hỏi: printf là một hàm và mọi hàm trả về một cái gì đó; int, void, float, vv Bây giờ những gì printf trở lại như nó là một chức năng?Printf trở lại là gì?
Trả lời
int
. Khi thành công, tổng số ký tự được viết sẽ được trả về. Khi không thành công, số âm sẽ được trả về. tài liệu tham khảo
Không phải mọi hàm trả về một cái gì đó, mà được thể hiện bằng cách sử dụng void
:
void function_returns_nothing(void);
printf
là một chức năng (khai báo trong <stdio.h>
) và nó trả về một int
, đó là số ký tự xuất ra. Nếu xảy ra lỗi, con số này là số âm.
printf()
's từ MSDN:
Trả về số ký tự in, hoặc một giá trị âm nếu một lỗi xảy ra.
Để thêm một sàng lọc chi tiết để trả lời tốt khác:
printf()
trả về một int
, nhưng làm thế là dấu hiệu của truyền vs in/viết ký tự?
Các
printf
hàm trả về số ký tự truyền, hoặc một giá trị âm nếu sản lượng hoặc mã hóa xảy ra lỗi. C11dr §7.21.6.3 3 (nhấn mạnh của tôi)
Khi thành công, số được truyền được trả về. stdout
thường được đệm, vì vậy số ký tự in có thể không được nhận ra hoặc không thành công cho đến sau này.
Khi int printf()
gặp sự cố vì nhiều lý do, nó trả về số âm. Số lượng ký tự được truyền không xác định.
Nếu thành công sau fflush(stdout)
xảy ra, thì giá trị không âm từ printf()
chắc chắn là số được in.
int transmitted = printf(......);
int flush_retval = fflush(stdout);
int number_certainly_printed = -1; // Unknown
if (transmitted >= 0 && flush_retval == 0) {
number_certainly_printed = transmitted;
}
Lưu ý rằng "in" một '\n'
thường xả stdout
, nhưng ngay cả hành động mà không được xác định.
What are the rules of automatic flushing stdout buffer in C?
- 1. Runtime.availableProcessors: nó sẽ trở lại là gì?
- 2. System.in.read thực sự trở lại là gì?
- 3. Chữ ký printf là gì?
- 4. "%. * S" có nghĩa là gì trong printf?
- 5. "printf" trong vi điều khiển, nó là gì?
- 6. C++: Thông số định dạng printf() cho "phao" là gì?
- 7. Vận chuyển trở lại trong C?
- 8. Trả lại bài tập là gì?
- 9. Cách thích hợp để mạnh mẽ loại sự trở lại của một hàm chung là gì?
- 10. Scala trở lại loại
- 11. c printf ("% x"), nó in gì?
- 12. Gửi subview trở lại
- 13. Độ chính xác printf bắt buộc cho __float128 để không làm mất thông tin là gì?
- 14. Tại sao khu vực trở lại là 0?
- 15. constexpr - tại sao chỉ là một tuyên bố trở lại?
- 16. Sự khác nhau giữa% 0,2lf và% .2lf là phần giữ chỗ printf là gì?
- 17. cảnh báo: trở lại kiểu mặc định là 'int' [-Wreturn-type]
- 18. Tại sao getppid() từ sự trở lại con 1
- 19. getpid và getppid trở lại hai giá trị khác nhau
- 20. LINQ trở lại chuỗi mảng
- 21. Lăn trở lại trong Git
- 22. đẩy trở lại kho github
- 23. chức năng c quay trở lại định dạng chuỗi
- 24. stringstream tạm ostream trở lại vấn đề
- 25. "sys.getrefcount()" trở lại giá trị
- 26. Duend dendrograms trong r (Đặt dendrograms trở lại trở lại trong r)
- 27. Nút quay trở lại MainActivity
- 28. Cuộn trở lại đỉnh div
- 29. Đúc một NSError trở lại một CFErrorRef trở
- 30. Tại sao malloc() và printf() được gọi là không reentrant?
Cho dù hàm 'void' 'không trả về bất kỳ thứ gì" hoặc "trả về' void' "là vấn đề ưu tiên ngôn ngữ. – AnT
Đây là một câu hỏi phỏng vấn rất tệ: không ai nên nhớ chi tiết của bất kỳ thư viện nào, tài liệu tồn tại cho điều đó!Điều này có nghĩa là bạn có thể hơi may mắn nếu bạn không nhận được công việc. –
nhưng tôi nhận được công việc và tôi chấp nhận thư mời .. và tôi không biết nó tốt hay xấu nhưng Adobe của nó. Tôi là năm 2009 passout và khá hạnh phúc khi có một công việc trong công ty đó .. :-) –