[解决办法] int c = UINT_MAX; //定义在limits.h中,标准c规定 int d = (unsigned int)-1; fprintf(stderr,"max is %u %u\n",c,d); [解决办法] http://stackoverflow.com/questions/9749930/uint-max-the-same-as-ulong-max-in-c/9749947#9749947 [解决办法] int 型转无符号整型 为0xFFFFFFFF [解决办法]
自己算法有问题 s*=i; //这里谁跟你说 两者相乘 就一定不溢出了? s 已经很大了 再乘i 你这里已经溢出了 跳入死循环中去了
#include<iostream> using namespace std;
int main() { unsigned long long int s=1; unsigned int i=1; while(s<= ((unsigned int)-1)){ s*=i; i++; } cout<<i<<endl;