the only difference is in mathematics
when you print "123" you get 123 on the screen
if you print 123 you still get 123 on the screen.
but when you say:
"123"*123 it's wrong
123*123 is correct.
when you want to check if two number are equal
but for strings
when a user enter data from the keyborad
if he enters 123 is it string or number?
it depends on the data type of the variable you are asking.
cin>>a; //enter 123 --->it's a number
cin>>a //enter 123 --->it's a string --->"123\0"
character \0 is used to informs as that a string ends here