这两行代码 输出的g_randeven严重不一样 : fprintf(stderr,"odd count : %ld/t even count : %ld/n",g_randodd,g_randeven); cout<<g_randeven<<endl; 使用ld打印会出错,因为g_randodd还有g_randeven都是64位的。大端表示法等等相关知识回忆一下。