Hi mọi người.
Mình hay làm các bài trên codeforces và một số trang online judges khác thì thường nếu dùng scanf() (vì tốc độ nhập nhanh hơn cin) với kiểu dữ liệu long long mà để đặc tả %lld
sẽ bị advise chuyển thành %I64d
. Mình dùng được một thời gian thấy khá ok đến hôm qua làm 1 bài thì bị dính lỗi chỗ này, cụ thể là trên ideone nhập cho long long dùng %I64d
ko nhập được giá trị cho biến, mà chuyển sang %lld
hoặc dùng cin mới nhập được: https://ideone.com/EDBzXO
Mình có search đc 1 post nói về vấn đề này trên Codechef: https://discuss.codechef.com/t/difference-between-i64d-lld/3810
Sơ qua thì có vẻ lỗi là do compiler, phụ thuộc vào compiler biên dịch.
Mọi người cho mình confirm lại vấn đề này và cụ thể %I64d
hoạt động được trên những compiler nào và %lld
hoạt động được trên những compiler nào không ạ? (của C++)
Mình xin cảm ơn.
Đặc tả đúng cho kiểu dữ liệu long long (int64_t) trong C++
%I64d
chỉ trên Windows thôi (MinGW + VS)
ideone dùng linux nên tạch
7 Likes