In the code below i successfully compile it but i can\'t understand why for certain values of number the program crash and for other values it\'s not. Could someone explain the
Pointer arithmetic is the culprit.
A const char*
is accepted by operator<<
, but will not point to a valid memory address in your example.
If you switch on -Wall
, you will see a compiler warning about that:
main.cpp: In function 'int main()':
main.cpp:6:59: warning: array subscript 255 is outside array bounds of 'const char [1]' [-Warray-bounds]
6 | std::cout<< "Value 1 : " << std::flush << ("" + number) << std::flush << std::endl;
| ^
main.cpp:8:59: warning: array subscript 15155 is outside array bounds of 'const char [1]' [-Warray-bounds]
8 | std::cout<< "Value 2 : " << std::flush << ("" + number) << std::flush << std::endl;
| ^
Value 1 : q
Live Demo