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

Thực ra cout << "This is my number" trước hay print() trước là unspecified behavior :slight_smile: 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 kiểu xưa thì << chính là một sequence point mới.

2 Likes

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.

2 Likes

Như vậy cout và printf là như nhau ạ?

Chúng nó đều là phương thức để in mà?

3 Likes

Không. printf trả về số byte in được, còn std::cout chỉ suy biến thành truthy/falsy. http://en.cppreference.com/w/cpp/io/c/fprintf

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