C++代码中关于0x7fffffff的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:02:05
这是一段建立有向网的代码

void CreateDN(MGraph &G)//建网
{
int i,j,k,w;
VertexType va,vb;
printf("请输入有向网G的顶点数和弧数(以空格作为间隔)\n");
scanf("%d %d",&G.vexnum,&G.arcnum);
printf("请输入%d个顶点的值(<%d个字符):\n",G.vexnum,MAX_NAME);
for(i=0;i<G.vexnum;++i)
scanf("%s",G.vexs[i]);
for(i=0;i<G.vexnum;++i)
for(j=0;j<G.vexnum;++j)
G.arcs[i][j]=0x7fffffff;
printf("请输入%d条弧的弧尾 弧头 权值(以空格作为间隔): \n",G.arcnum);
for(k=0;k<G.arcnum;++k)
{
scanf("%s%s%d%*c",va,vb,&w);
i=LocateVex(G,va);
j=LocateVex(G,vb);
G.arcs[i][j]=w;
}
}

其中有一行“G.arcs[i][j]=0x7fffffff; ”
请问这行里的0x7fffffff是什么意思?一般在程序中能起到什么作用?

可以算一下 0x7FFFFFFF 是多少
每个十六进制数4bit,因此8位16进制是4个字节,刚好是一个int整型

F的二进制码为 1111
7的二进制码为 0111

这样一来,整个整数 0x7FFFFFFF 的二进制表示就是除了首位是 0,其余都是1
就是说,这是最大的整型数 int(因为第一位是符号位,0 表示他是正数)

用 INT_MAX 常量可以替代这个值。

0x说明采用的是16进制,7fffffff就是一个数字了,不过是个很大的数字