1. 程式人生 > >C語言中實現bool(布林型變數)

C語言中實現bool(布林型變數)

C語言中,本身沒有bool(布林型變數)。但是我們可以用其他方式來模擬。

一、如果簡單的使用char、int、long變數來表示0/1,則太浪費空間了。

二、這裡介紹一種巧妙的方式實現bool,高空間利用率。

#define true	1
#define false	0

//--------------------------------------------聯合體(共用體) 定義
typedef union
  {
	//使用位域
  	struct
  	{
	  unsigned b0                 : 1;
	  unsigned b1                 : 1;
	  unsigned b2                 : 1;
	  unsigned b3                 : 1;
	  unsigned b4                 : 1;
	  unsigned b5                 : 1;
	  unsigned b6                 : 1;
	  unsigned b7                 : 1;
  	}bit_type;
  	unsigned char byte;
   }FLAG;

FLAG FLAG0;		//結構變數宣告

//--------------------------------------------結構型別變數位域巨集定義
#define flag_0	FLAG0.bit_type.b0 
#define flag_1	FLAG0.bit_type.b1
#define flag_2	FLAG0.bit_type.b2
#define flag_3	FLAG0.bit_type.b3
#define flag_4	FLAG0.bit_type.b4
#define flag_5	FLAG0.bit_type.b5
#define flag_6	FLAG0.bit_type.b6
#define flag_7	FLAG0.bit_type.b7
這裡使用union(聯合體)來實現高空間利用率

相關推薦

C語言實現bool布林變數

C語言中,本身沒有bool(布林型變數)。但是我們可以用其他方式來模擬。一、如果簡單的使用char、int、long變數來表示0/1,則太浪費空間了。二、這裡介紹一種巧妙的方式實現bool,高空間利用率。#define true 1 #define false 0 //--

C語言的整數short,int,long

整數是程式設計中常用的一種資料,C語言中有三種整數型別,分別為 short、int 和 long。int 稱為整型,short 稱為短整型,long 稱為長整型,它們的長度(所佔位元組數)關係為: short <= int <= long 它們具體佔用幾個位元

c語言實現超連結多檔案程式的編譯和連線

一個實用價值的c語言應用程式往往較大,需要劃分成不同的檔案,那麼如何把這些檔案編譯,連線成一個統一的可執行的檔案並執行呢?   c語言提供了編譯預處理“#include“檔名””來實現‘檔案包含”的操作,其特點是一個原始檔可以將另外一個原始檔的全部包含進來。預處理程式將#i

c語言實現全局變量

比較 實現 自定義類型 外部 main [] 定義變量 結構體 而在 在用C語言編寫程序的時候,我們常常想定義一個可以在不同.c文件中被使用的變量,以此來實現數據的傳遞。但是這個變量定義的不對的話,就會在編譯時出現編譯錯誤,或者可以編譯通過,但是沒有實現變量在不

VC++和C語言常見數據類轉換為字符串的方法

char* 北京 相同 字符指針 ascii bst sdn sprint 出現 1。短整型(int) itoa(i,temp,10);///將i轉換為字符串放入temp中,最後一個數字表示十進制 itoa(i,temp,2); ///按二進制方式轉換 2。長整型(long

c語言基礎-變量

可用 我們 固定 字節數 有符號 borde 輸入 c語言 長整型 一、整型變量 類型 關鍵字 取值範圍 存儲單元字節數(非固定) 輸出 有符號整型 [signed] int -2147483648~2147483647 4 %d 無符號整型 unsign

C語言操作符總結

邏輯操作符 常見的邏輯操作符: 邏輯與( && )、 邏輯或( || ) 邏輯操作運算中不看二進位制位,只看真假。 使用規則: 邏輯與( && ):操作符作用的兩個運算元全為 真 時結果為 “ 1 ” ,其他情況結果都為 “

C語言】給定兩個整變數的值,將兩個值的內容進行交換不同方法

     給定兩個整型變數的值,將兩個值的內容進行交換,現在我介紹幾種不同的實現方法:法1:在主函式裡實現,這樣操作這兩個值時並未重新開闢空間,直接交換可以達到目的。#include<stdio.h> #include<stdlib.h> int m

C語言位操作符1-計算機的整數表示方法

寫在前面 長久以來,位操作符一直困擾著我,為什麼呢?因為其雖易用,但是我自己卻理解不透徹,用著總覺得有隱患?那麼今天就來詳細地理一下計算機中的位操作符與整數在計算機中的儲存。 本文是作為一個非科班出身程式設計師的自我學習記錄之作,如果能夠在自我提高的同時也能幫

C語言通過邏輯運算與或非實現加法

1.加法器:首先看看下面的內容,瞭解一下什麼是加法器 本部分摘自:http://jpkc.nwpu.edu.cn/dzjc/diangongdz/wangluokecheng/dianzijishu/

C語言如何實現繼承和多

使用函式指標來實現繼承和多型 #include <stdio.h> #include <stdlib.h> struct Base_Vptr //虛擬函式表 { void(*fun1)( void*);

C語言的隨機數RAND 與 SRAND 之間的關係

#include <stdio.h> #include <stdlib.h> #include <time.h> //字串陣列的時候用 //隨機數產生函式rand與srand //rand()這個函式繫結的是一個整數 //隨機數產生器,但是

C語言關於malloc0問題

首先來解釋malloc(0)的問題,這個語法是對的,而且確實也分配了記憶體,但是記憶體空間是0,就是說返回給你的指標是不能用的,感覺奇怪吧?但是從作業系統的原理來解釋就不奇怪了,這要涉及作業系統維護記憶體的方法來說了,在記憶體管理中,記憶體被分為2部分,棧和堆,棧有自己的機

C語言函式傳遞實參 形參

形參:在被調函式形參表中的變數名、陣列名,該過程在被呼叫前,沒有為它們分配記憶體,其作用是說明自變數的型別和形態以及在過程中的作用。  形參可以是 合法變數名,陣列名  實參:從主調過程傳遞給被呼叫過程的引數值。實參可以是變數名、陣列名、常數或表示式。在過程呼叫  傳遞引

C語言關鍵字作用const和static和extern

儲存型別關鍵字(4個): auto: 宣告自動變數,現在一般不用(auto int a;和int a;一樣) register: 宣告暫存器變數 static: 宣告靜態變數。該變數宣告時系統所分配的

C語言程式設計實現,浮點與字元陣列相互轉化

歡迎轉載,請註明出處,本文地址:http://blog.csdn.net/jk050802/article/details/8628764 聯絡郵箱:[email protected] 簡介          從浮點型轉換為字元型:這裡比較簡單,只需要用

C++模板與用C語言實現模板

1、模板的概念 我們已經學過過載(Overloading),對過載函式而言,C++的檢查機制能通過函式引數的不同及所屬類的不同。正確的呼叫過載函式。例如,為求兩個數的最大值,我們定義MAX()函式需要對不同的資料型別分別定義不同過載(Overload)版本。 //函式

C語言學習之路---C語言的數據類

語言學 名稱 進制數 world 程序 efi c語言學習 之路 進制 1.常量   常量就是在程序中不可變化的量,常量在定義的時候必須給一個初值 #define:定義一個宏常量   const:定義一個const常量 2.字符串常量   "Hel

1014 C語言程序設計教程第三版課後習題6.4

content += 教程 print ons ont c語言程序設計 lld cnblogs 題目描述 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一個數字。 輸入 n 輸出 和 樣例輸入 5 樣例輸出 153 1 #include "stdio.h"

1013: C語言程序設計教程第三版課後習題6.3

其中a是一個數字 blog += color turn sam c語言程序 [] c語言 題目描述 求Sn=a+aa+aaa+…+aa…aaa(有n個a)之值,其中a是一個數字。 例如:2+22+222+2222+22222(n=5),n由鍵盤輸入。 輸入 a 輸出 和 樣