`printf "2+2" | bc` returns a syntax error, `echo "2+2" | bc` works, how are they handling strings differently?

printf "2+2" | bc gives me a syntax error, but echo "2+2" | bc outputs 4, I thought printf would work fine but it didn’t, could someone help me understand why? >Solution : $ printf "2+2\n" | bc 4 Looks good to me. bc won’t be pleased if there’s EOF before the expression line ends.