I don't think it's meant to - not that way anyway. I think your code is working correctly - I suspect your understanding of it is wrong.
The compiler first removes all the constant declarations so that your code then looks like this:
Print C_Sum
Print C_Sum2
Print C_Sum3
New_Print "My print version :D"
wait key
End
Function Print_Text(String$)
Print String$
EndFunction
It then replaces all the constant names with the text specified in your constant declarations. Your code then looks like this:
Print C_One + C_Two
Print C_One||C_Two
Print C_One + 5
Print_Text()"My print version :D"
wait key
End
Function Print_Text(String$)
Print String$
EndFunction
The compiler then compiles your code and sees two variables C_One and C_Two which are initialised to zero.
Constants are just a convenient way of replacing commonly occurring bits of code with something more meaningful to the programmer - and the compiler simply reinstates those bits of code for you before it does the main compile.