I just found out something rather strange here. It wasted me the better part of a day.
In MSVC, when an argument passed to the main program is abc&123, if one runs the program using the "Start Debugging" option, MSVC will pass the argument (one of argv[]) as "abc&123". But if one runs the program using "Start Without Debugging", MSVC will pass only "abc" and cut off whatever after the "&". What is the reason behind this?