为什么cout的结果和printf的结果不同?使用g++和clang++都是这样。
#include<iostream>
#include<cstdio>
#include<string>
#include<arpa/inet.h>
using namespace std;
int main()
{
string ipAddress = "256.256.256.256";
in_addr_t number = inet_addr(ipAddress.c_str());
cout << number << '\n';//输出4294967295.
printf("%d\n",number);//输出-1.
}
inet_addr函数内部并没有判断是否越界,只是把4部分按1000进制加起来,printf应该写%u,in_addr_t的类型是u_int32