我最近遇到了這樣的代碼運營商:在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