国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 詳解C語言位域的使用與注意事項

詳解C語言位域的使用與注意事項

2021-04-22 15:19zhenhuaqin C/C++

所謂“位域”是把一個字節(jié)中的二進位劃分為幾個不同的區(qū)域, 并說明每個區(qū)域的位數。每個域有一個域名,允許在程序中按域名進行操作。 這樣就可以把幾個不同的對象用一個字節(jié)的二進制位域來表示。下面這篇文章就給大家介

位域的定義

有些信息在存儲時,并不需要占用一個完整的字節(jié), 而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態(tài), 用一位二進位即可。為了節(jié)省存儲空間,并使處理簡便,C語言又提供了一種數據結構,稱為“位域”或“位段”。所謂“位域”是把一個字節(jié)中的二進位劃分為幾個不同的區(qū)域,并說明每個區(qū)域的位數。每個域有一個域名,允許在程序中按域名進行操作。 這樣就可以把幾 個不同的對象用一個字節(jié)的二進制位域來表示。

位域的定義和位域變量的說明位域定義與結構定義相仿,其形式為:

?
1
2
3
4
5
6
7
8
struct 位域結構名
  { 位域列表 };
eg:struct weiyu {
         int a:2;
         int b:5;
         int  :5;//此五位為空域,不能使用   
         int c:3;
          }

位域雖然簡單好用,但使用時需要注意:

     1) 如果相鄰位域字段的類型相同,且其位寬之和小于類型的sizeof大小,則后面的字段將緊鄰前一個字段存儲,直到不能容納為止;

     2) 如果相鄰位域字段的類型相同,但其位寬之和大于類型的sizeof大小,則后面的字段將從新的存儲單元開始,其偏移量為其類型大小的整數倍;

     3) 整個結構體的總大小為最寬基本類型成員大小的整數倍。

     4) 如果相鄰的位域字段的類型不同,則各編譯器的具體實現有差異,VC6采取不壓縮方式,Dev-C++采取壓縮方式;

     5) 如果位域字段之間穿插著非位域字段,則不進行壓縮;(不針對所有的編譯器)

注意:4 ,5跟編譯器有較大的關系,使用時要慎重,盡量避免。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdio.h"
void main(int argn ,char *argv)
{
  struct   test {
    unsigned a:10;
    unsigned b:10;
    unsigned c:6;
    unsigned :2;//this two bytes can't use
    unsigned d:4;
    }data,*pData;
  data.a=0x177;
  data.b=0x111;
  data.c=0x7;
  data.d=0x8;
  
  pData=&data;
  printf("data.a=%x data.b= %x data.c=%x data.d=%xn",pData->a,pData->b,pData->c,pData->d);//位域可以使用指針
  printf("sizeof(data)=%dn",sizeof(data));  //4 bytes ,最常用的情況
  struct testLen{
  char a:5;
  char b:5;
  char c:5;
  char d:5;
  char e:5;
  }len;
  
  printf("sizeof(len)=%dn",sizeof(len));   //5bytes 規(guī)則2
  struct testLen1{
    char a:5;
    char b:2;
    char d:3;
    char c:2;
    char e:7;
    }len1;
  printf("sizeof(len1) =%dn",sizeof(len1));  //3bytes 規(guī)則1
  struct testLen2{
    char a:2;
    char :3;
    char b:7;
    long d:20; //4bytes
    char e:4;
    }len2;
  printf("sizeof(len2)=%dn",sizeof(len2)); //12 規(guī)則3,4,5,總長為4的整數倍,2+3 占1byte,b占1bye 由于與long對其,2+3+7 占4字節(jié),后面 d 與 e進行了優(yōu)化 占一個4字節(jié)
  struct testLen3{
    char a:2;
    char :3;
    char b:7;
    long d:30;
    char e:4;
    }len3;
  printf("sizeof(len3)=%dn",sizeof(len3));//12 規(guī)則3,4,5,總長為4的整數倍,2+3 占1byte,b占1bye 由于與long對其,2+3+7 占4字節(jié),后面 d占一個4字節(jié),為了保證與long對其e獨占一個4字節(jié)
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用C語言能帶來一定的幫助,如果有疑問大家可以留言交流。

原文鏈接:http://blog.chinaunix.net/uid-21411227-id-3512376.html

延伸 · 閱讀

精彩推薦
  • C/C++c++ 單線程實現同時監(jiān)聽多個端口

    c++ 單線程實現同時監(jiān)聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監(jiān)聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
主站蜘蛛池模板: 久热免费在线观看 | 一区二区精品视频 | 一级a毛片| 国产午夜精品一区二区三区 | av中文字幕在线 | 羞羞在线观看 | 美女爽到呻吟久久久久 | 亚洲一区中文字幕在线观看 | 欧美在线观看禁18 | 中文字幕成人 | 亚洲日韩欧美一区二区在线 | 亚洲欧美激情精品一区二区 | 久久亚洲综合 | 精品国产一区二区三区日日嗨 | 午夜成人免费视频 | 日韩成人免费视频 | 97久久精品午夜一区二区 | 国产精品久久久久久久久久久久久久 | 国产一区二区三区久久 | 亚洲视频自拍 | 欧美大片免费在线观看 | 亚洲国产视频网站 | 久久99蜜桃综合影院免费观看 | 成年人毛片视频 | 日韩国产一区二区 | 国产免费黄色 | 亚洲视频免费观看 | 免费的一级毛片 | 欧美久久久久久久久久久 | 亚洲综合区 | 国产精品久久久久久久久免费桃花 | 国产一二三区在线观看 | 在线看一区 | 欧美精品网站 | 日韩电影在线免费观看 | 久久久精品 | 国产一区二区免费视频 | 精品美女久久久 | 欧美成年黄网站色视频 | 99精品99| 亚洲日本国产 |