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
rogp10 viết 17:56 ngày 01/10/2018

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.

HK boy viết 18:11 ngày 01/10/2018

print()

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.

evai55 viết 18:07 ngày 01/10/2018

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

HK boy viết 18:01 ngày 01/10/2018

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

rogp10 viết 18:07 ngày 01/10/2018

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

Bài liên quan
0