int和long在相应的规范中,只给出了最小范围不能低于多少,具体到每一种编译器中的实现,只要满足这个最低要求即可,并没有上限,所以完全可能出现在某一种编译器中int的表示范围和long的表示范围相同的情况。此时二者在这种编译器中没有区别。
你的系统是64位,但是你写的程序是32位,所以得到的结果是long 也是四字节。 你用的什么编译器?我告诉你怎么生成64位版本的可执行文件。