执行,动词execute,可执行的文件,executable file。.bat、.com、.exe、.sys等等,都是可执行文件。程序可执行与否,与扩展名无关,实质在指令性质。
out,仅仅是输出。
名字都起不好,谈何优越。
楼主的程序能够执行,就表示它已经通过了编译和链接,产生了可执行文件,而且确实能执行。这种可执行的文件,不管它的扩展名是什么,本质上都是executable file,即所谓的.exe文件,称呼不同而已,说的是本质。
那个运行出来的现象,其实很容易解释,这与gets()有缓冲区溢出攻击一样,可以执行不奇怪,因为这是程序自身设计的bug。但编译器让这种不符合语义的代码编译通过,并不给出任何错误或警告提示,那就是这个编译器失职。免费的,可以不进行任何检查一股脑儿让代码编译通过,那有什么困难,只是编译器的价值不是在于能够产生最终可执行文件,而是能够给程序员提供尽可能多的错误和缺陷预防措施。