<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          C語言試題大全五

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          1. 分析:
          struct bit
          { int a:3;
          int b:2;
          int c:3;
          };
          int main()
          {
          bit s;
          char *c=(char*)&s;
          cout< *c=0x99;
          cout << s.a < int a=-1;
          printf("%x",a);
          return 0;
          }
          輸出是什么?

          答案:
          4
          1
          -1
          -4
          ffffffff
          因?yàn)?x99在內(nèi)存中表示為 100 11 001 , a = 001, b = 11, c = 100
          當(dāng)c為有符合數(shù)時(shí), c = 100, 最高1為表示c為負(fù)數(shù),負(fù)數(shù)在計(jì)算機(jī)用補(bǔ)碼表示,所以c = -4;同理
          b = -1;
          當(dāng)c為有符合數(shù)時(shí), c = 100,即 c = 4,同理 b = 3

          位域 :
          有些信息在存儲(chǔ)時(shí),并不需要占用一個(gè)完整的字節(jié),而只需占幾個(gè)或一個(gè)二進(jìn)制位。例如在存放一個(gè)開關(guān)量時(shí),只有0和1 兩種狀態(tài),用一位二進(jìn)位即可。為了節(jié)省存儲(chǔ)空間,并使處理簡便,C語言又提供了一種數(shù)據(jù)結(jié)構(gòu),稱為“位域”或“位段”。所謂“位域”是把一個(gè)字節(jié)中的二進(jìn)位劃分為幾個(gè)不同的區(qū)域,并說明每個(gè)區(qū)域的位數(shù)。每個(gè)域有一個(gè)域名,允許在程序中按域名進(jìn)行操作。這樣就可以把幾個(gè)不同的對象用一個(gè)字節(jié)的二進(jìn)制位域來表示。一、位域的定義和位域變量的說明位域定義與結(jié)構(gòu)定義相仿,其形式為:
          struct 位域結(jié)構(gòu)名
          { 位域列表 };
          其中位域列表的形式為: 類型說明符位域名:位域長度
          例如:
          struct bs
          {
          int a:8;
          int b:2;
          int c:6;
          };
          位域變量的說明與結(jié)構(gòu)變量說明的方式相同??刹捎孟榷x后說明,同時(shí)定義說明或者直接說明這三種方式。例如:
          struct bs
          {
          int a:8;
          int b:2;
          int c:6;
          }data;
          說明data為bs變量,共占兩個(gè)字節(jié)。其中位域a占8位,位域b占2位,位域c占6位。對于位域的定義尚有以下幾點(diǎn)說明:
          1. 一個(gè)位域必須存儲(chǔ)在同一個(gè)字節(jié)中,不能跨兩個(gè)字節(jié)。如一個(gè)字節(jié)所??臻g不夠存放另一位域時(shí),應(yīng)從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如:
          struct bs
          {
          unsigned a:4
          unsigned :0 /*空域*/
          unsigned b:4 /*從下一單元開始存放*/
          unsigned c:4
          }
          在這個(gè)位域定義中,a占第一字節(jié)的4位,后4位填0表示不使用,b從第二字節(jié)開始,占用4位,c占用4位。
          2. 由于位域不允許跨兩個(gè)字節(jié),因此位域的長度不能大于一個(gè)字節(jié)的長度,也就是說不能超過8位二進(jìn)位。
          3. 位域可以無位域名,這時(shí)它只用來作填充或調(diào)整位置。無名的位域是不能使用的。例如:
          struct k
          {
          int a:1
          int :2 /*該2位不能使用*/
          int b:3
          int c:2
          };
          從以上分析可以看出,位域在本質(zhì)上就是一種結(jié)構(gòu)類型,不過其成員是按二進(jìn)位分配的。
          二、位域的使用位域的使用和結(jié)構(gòu)成員的使用相同,其一般形式為:位域變量名位域名位域允許用各種格式輸出。
          main(){
          struct bs
          {
          unsigned a:1;
          unsigned b:3;
          unsigned c:4;
          } bit,*pbit;
          bit.a=1;
          bit.b=7;
          bit.c=15;

          2.int (*s[10])(int) 表示的是什么
          答案:
          int (*s[10])(int) 函數(shù)指針數(shù)組,每個(gè)指針指向一個(gè)int func(int param)的函數(shù)。
          3. c和c++中的struct有什么不同?
          答案:
          c和c++中struct的主要區(qū)別是c中的struct不可以含有成員函數(shù),而c++中的struct可以。c++中struct和class的主要區(qū)別在于默認(rèn)的存取權(quán)限不同,struct默認(rèn)為public,而class默認(rèn)為private


          關(guān)鍵詞: C語言試題大

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();