http://www.cnblogs.com/zyl910/archive/2012/08/08/c99int.html