01/10/2018, 15:56
Sự khác biệt về cơ chế giữa cout và printf
Cho mình hỏi về sự khác biệt trong cơ chế giữa cout và printf.
Mình có chạy thử 1 đoạn code:
#include <iostream>
using namespace std;
int print()
{
static int i;
cout << "Hello" << endl;
return i++;
}
int main()
{
cout << "This is my number "<<print() << endl;
}
thì nó in:
Hello
This is my number 0
Bài liên quan
Thực ra
cout << "This is my number"
trước hay print() trước là unspecified behavior cái nào trước cũng okie, trái sang phải hay phải sang trái đều có compiler, mà chưa thấy tính loạn xạ thôi. C++17 thì op<< overloaded phải bật side effect từ trái sang phải, nói theo cách xưa thì << chính là một sequence point mới.Kết quả trả về của
printf(...)
là 0 nếu như việc in không bị lỗi, còn ra số khác nếu như việc in bị lỗi.Như vậy cout và printf là như nhau ạ?
Chúng nó đều là phương thức để in mà?
Không.
printf
trả về số byte in được, cònstd::cout
chỉ suy biến thành truthy/falsy. http://en.cppreference.com/w/cpp/io/c/fprintf