Question:
#include <iostream>
int main()
{
std::cout << "25"+1;
return 0;
}
I am getting "5" as output.when I use "5"+1,output is blank;"456"+1 output is "56".confused what is going behind the scenes.
Answer:
The string literal "25"
is really a char array of type const char[3]
with values {'2', '5', ' '}
(the two characters you see and a null-terminator.) In C and C++, arrays can easily decay to pointers to their first element. This is what happens in this expression:
"25" + 1
where "25"
decays to &"25"[0]
, or a pointer to the first character. Adding 1
to that gives you a pointer to 5
.
On top of that, std::ostream
, of which std::cout
is an instance, prints a const char*
(note that char*
would also work) by assuming it is a null-terminated string. So in this case, it prints only 5
.