C语言int范围与平台有关,不同平台范围可能不同有的是16位,有的是32位,如果刚巧你那个平台int范围比较大32位,你赋值过去就还是原值65535(在可表示范围内);否则如果是16位的当然就是-1了。赋值给float应该还是原值,float范围比较大。