Có nên kết hợp scanf + cout và cin + printf?

mình có nghe một pro nói là ko được dùng lẫn lộn, mà mình dùng thấy bình thường mà nhỉ? Hay là nó có những hạn chết về thời gian nhập xuất ??
vd

char x;
scanf("%c", &x);
cout<<x<<"\n";

Code trông rất hổ lốn, lẫn lộn cú pháp của C và C++.

Nếu bạn đang thi competitive programming thì nên chỉ dùng hoặc printf scanf, hoặc cin cout thôi. Thời gian code chạy khi dùng lẫn lộn không tối ưu dược bao nhiêu. Lý do khác là như trên.

Nếu bạn không thi thì càng không nên sử dụng như vậy, lý do chính như trên.

5 Likes

Vì mặc định IO stream của C và C++ xài chung buffer (stdout). Thử tắt sychronization đi là nó xài buffer riêng, thằng này đạp lên thằng kia liền

https://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio

6 Likes
  1. Code C++, nói chung C compiler không xử lý được => Code của bạn chỉ có C++ compiler là dịch được
    1.1. Dẫn đến việc có code C trong dự án làm cho mọi thứ trông thật là hổ lốn, khó bảo trì, code chung nhiều người thì chỉ muốn khóc. Người dùng C++ hầu hết quen với cin, cout, nhìn thấy scanf, printf với cái đống cú pháp formatter là đau đầu khó chịu :joy:
    1.2. “Thử tắt sychronization đi là nó xài buffer riêng, thằng này đạp lên thằng kia liền”: các lý do kỹ thuật, ví dụ như bạn @anon5203072 đã nói cũng rất đáng lưu tâm.

  2. Một số code C, C++ compiler có thể không dịch được vì 2 thằng phát triển theo các tiêu chuẩn khác nhau. Để tránh việc này thì C++ nên xài những gì thuộc về C++

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?