在C中'''做什么?

Hud*_*den 4 c sockets syntax

可能重复:
'unsigned temp:3'表示什么

我一直在尝试用C学习原始套接字编程,并且遇到过这样的问题:

unsigned char      iph_ihl:5, iph_ver:4;
Run Code Online (Sandbox Code Playgroud)

我对':'的含义感到困惑.它甚至做了什么吗?或者它只是变量名称的一部分?

Car*_*rum 6

你在看bitfields.这些定义必须在结构内部,它们意味着它iph_ihl是一个5位字段并且iph_ver是一个4位字段.

你的例子有点奇怪,因为unsigned char在大多数机器上都是8位类型,但那里声明了9位的字段.

一般来说,位域非常不便携,所以我建议不要使用它们,但你可以在这里阅读更多相关信息.