类型 | 字节数(1个字节八位) |
---|---|
bool | 1 |
char | 1 |
int | 2 |
short | 2 |
long | 4 |
float | 4 |
unsigned long | 4/8(32/64) |
long long | 8 |
double | 8 |
指针 | 4/8(32/64) |
类型声明符 | 字节数 | 取值范围 |
---|---|---|
int | 2 | -32768 |
short [int] | 2 | -32768 |
long [int] | 4 | -2147483648 |
unsigned [int] | 2 | 0 |
unsigned short | 2 | 0 |
unsigned long | 4 | 0 |
float | 4 | -3.4x10^-38^~3.4x10^-38^ |
double | 8 | -1.7x10^-308^~1.7x10^-308^ |
long double | 16 | -1.2x10^-4293^~1.2x10^-4293^ |
// 题目描述
// 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
// 一个长整数。
// 举例:一个ip地址为10.0.3.193
// 每段数字 相对应的二进制数
// 10 00001010
// 0 00000000
// 3 00000011
// 193 11000001
// 组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。
// 的每段可以看成是一个0-255的整数,需要对IP地址进行校验
#include <iostream>
using namespace std;
int main()
{
long long n, a1, a2, a3, a4;
char ch;
while(cin >> a1 >> ch >> a2 >> ch >> a3 >> ch >> a4)
{
cin >> n;
long long res = 0;
res += (a1 << 24) + (a2 << 16) + (a3 << 8) + a4;
a1 = n >> 24;
a2 = (n >> 16) & 255;
a3 = (n >> 8) & 255;
a4 = n & 255;
cout << res << endl << a1 << '.' << a2 << '.' << a3 << '.' << a4 << endl;
}
return 0;
}
#include "sstream"
stringstream ss
ss<<str
ss>>num
可用于类型转换
auto_ptr
存在指向不确定性,新版c++基本已经摒弃了unique_ptr
一个特定对象只能有唯一指针share_ptr
一个特定对象有多个指针