我最近遇到了这样的代码运营商:在C,它是什么?
struct tcpheader {
unsigned char tcph_reserved:4, tcph_offset:4;
....
其最明显的是什么:
样做,但为什么我从来没有见过这种正式? 我无法找到:
运算符的正式定义。我搜索了 分区,拆分和变量声明的划分无济于事。
任何人都有关于:
运营商的一些信息?
我最近遇到了这样的代码运营商:在C,它是什么?
struct tcpheader {
unsigned char tcph_reserved:4, tcph_offset:4;
....
其最明显的是什么:
样做,但为什么我从来没有见过这种正式? 我无法找到:
运算符的正式定义。我搜索了 分区,拆分和变量声明的划分无济于事。
任何人都有关于:
运营商的一些信息?
这不是一个“操作符”,它是一种声明bit fields的方法。
它只在struct
和union
声明中有效,基本上可以告诉编译器有多少位需要该字段使用。
因此,您的示例为每个字段指定了4位,可能希望将这两个字段打包到相同的8位字节中。
请注意,使用位字段时的位顺序和布局未指定,并且由编译器决定,因此非常不便。
:
不是运算符,它被称为结肠标点和用于指定一个位字段的宽度。
这是:
不是一个运营商。这是Bitfields。一些网络搜索会产生比你想要的更多的关于它们的信息。但基本上冒号后面的数字描述了该字段使用多少位。
在你的代码 -
struct tcpheader {
unsigned char tcph_reserved:4, tcph_offset:4;
通常unsigned char
有8位的。 tcph_reserved:4
表示您将4位分配给tcph_reserved
。
位域仅在结构和联合
我怎么知道它叫做Bitfields?我在寻找可变分割,分割,分割。 – user3167049 2014-09-02 13:51:25
@ user3167049这个回答是基于你的问题!如果你在结构体''unsigned char tcph_reserved:4'中有这样的事情''一味地说你可以说它是位域! – Sathish 2014-09-02 13:58:53
是有效的我wiil不是早先的答案是很好解释说,:
用于指示在struct
声明位域成员的事实添加任何东西。
在另一方面,在Ç我们有三元运算符? :
在这种工作方式,例如:
int condition = 3 > 4;
char result1 = 'x', result2 = 'A';
char x = (condition)? result1 : result2;
condition
。condition
为为真(非零值),则评估表达式result1
。condition
是false(零值),则评估表达式result2
。换句话说,它对于一个if()
句子来说是一个短手,其优点是可以在表达式中使用。
正如你所看到的,性格:
是三元运算符?:
的一部分,但它不是由它自己的操作,因为它会联合到字符?
。
我正在寻找一个重复的 – user3167049 2014-09-02 12:29:50
但这也是从其他东西的重复。 – user3167049 2014-09-02 12:30:19