More differences:
"printf" returns an integer value (equal to the number of characters printed) and "cout" does not return anything
And.
cout << "y = " << 7;
is not atomic.
printf("%s = %d", "y", 7);
is atomic.
cout performs typechecking, printf doesn't.
There's no iostream equivalent of "% d"