C語言 共用體/聯合體 union

引入

在這里插入圖片描述
傳統技術的缺陷—結構體
在這里插入圖片描述

共用體基本介紹

共用體與結構體一樣都是值傳遞
在這里插入圖片描述
定義共用體的三種方式
在這里插入圖片描述

內存布局

共用體數據空間=占用最大的成員的數據空間大小
在這里插入圖片描述
案例解析
1)
在這里插入圖片描述
2)
在這里插入圖片描述
3)
在這里插入圖片描述
4)
在這里插入圖片描述
注:
1010 1101 0101 0100所對應的十進制是負數
計算機中的二進制都是以補碼存儲的,所以1010 1101 0101 0100是補碼

計算時,補碼=>反碼=>原碼
補碼=原碼取反+1
所以補碼=>原碼: 補碼-1,再取反
補碼: 1010 1101 0101 0100
補碼-1: 1010 1101 0101 0011
取反: 1101 0010 1010 1100
計算此時得到的原碼:
-(214+212+29+27+25+23+2^2)
=-(16384+4096+512+128+32+8+4)
=-21164
所以輸出原碼:-21164

記住:計算機中存儲的是補碼,輸出的是原碼
正數:原碼=反碼=補碼

案例實踐

在這里插入圖片描述
兩種定義共用體的方式都可以
在這里插入圖片描述
代碼
fflush(stdin);//刷新一下輸入,保證數據都存入到結構體中
在這里插入圖片描述
以表格的形式輸出信息
在這里插入圖片描述

練習–公司職員信息

#include<stdio.h>
#include<string.h>
//共用體union--職員信息表格
#define SIZE 100
struct  Staff{char name[10];//姓名int age;//年齡char flag;//標識 a輸入公司,b輸入職業union Position{//不能使用char *com; 這里是字符串常量,不能改變char com[10];//公司char pro[10];//職業}pos;
}staff[SIZE];//定義結構體數組,存儲多個結構體變量
int main()
{int i=0,d=1,j;while(1){printf("input information %d:\n",i);printf("d:\n");scanf("%d",&d);//d=1繼續循環,d=0跳出循環if(d==0)//d=0{break;//跳出while循環}else if(d==1)//d=1{printf("name age flag:\n");scanf("%s %d %c",staff[i].name,&(staff[i].age),&(staff[i].flag));if(staff[i].flag=='a'){printf("com:\n");scanf("%s",staff[i].pos.com);}else if(staff[i].flag=='b'){printf("pro:\n");scanf("%s",staff[i].pos.pro);}}i++;}fflush(stdin);printf("exit:\nprint the information:\n");printf("name\tage\tpos\n");for(j=0;j<i;j++){if(staff[j].flag=='a')printf("%s\t%d\t%s\n",staff[j].name,staff[j].age,staff[j].pos.com);else if(staff[j].flag=='b')printf("%s\t%d\t%s\n",staff[j].name,staff[j].age,staff[j].pos.pro);}getchar();//entergetchar();return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446527.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446527.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446527.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ Makefile文件詳解

什么是Makefile文件 一個工程&#xff0c;源文件不計其數&#xff0c;按照類型、功能、模塊分別放在對應的若干個目錄中Makefile定義了一系列的規則&#xff0c;比如定義文件編譯的先后順序。類似shell腳本&#xff0c;也可以執行操作系統的命令Makefile帶來的好處是自動化編譯…

C語言 項目練習-家庭收支軟件

目標 需求說明 界面說明 登記收入界面: 登記支出界面 收支明細界面 退出界面 項目代碼改進要求 自己完成的代碼 版本1 #include<stdio.h> #include<string.h> void choose(int button,int i); //項目--家庭收支軟件 static double total10000;//總金額 #de…

c++ fmt 庫安裝和使用示例、clion配置

安裝 git clone https://github.com/fmtlib/fmt.gitmake .mkae && make install CLion使用 使用和安裝存在出入下載源碼&#xff0c;可以先 clone 到你的項目中去&#xff0c;https://github.com/fmtlib/fmt &#xff0c;我放到的是項目的 dependencies 目錄然后在…

C語言 項目 CRM系統(客戶信息管理系統)

項目目標 項目需求說明 系統界面 1)添加客戶界面 通過編號來區分客戶 2)刪除客戶界面 對用戶輸入的編號進行核查,存在與否,合法與否 3)顯示客戶列表界面 4)修改客戶信息的界面 項目設計 Customer結構體的設計 CRM系統結構框架圖 案例代碼 #include <stdio.h>…

代碼重構 防火墻 相關知識

參考 依據Linux命令以及sysconf下現有的iptables命令&#xff0c;詳見hsm_sysconf_server/src/sysconf_server.cpp中的firewall規則。 接口名稱 firewall_manager 目的(現實) 根據網口直連獲取當前eth0和eth1的各種信息保證設置的正確性 以及要針對管理口和服務口設計不…

C語言 文件的基本介紹

基本介紹 輸入流與輸出流 重點在C程序(內存)的數據移動方向 對于C程序(內存) 輸入數據:輸入流 輸出數據:輸出流 輸入 和輸出 C標準庫 標準輸入輸出庫 標準文件 getchar()&putchar()函數 代碼 #include<stdio.h> #include<stdlib.h> //文件--getchar()和…

ubuntu修改字體 樣式

使用 快捷鍵 ctrlaltt 打開終端安裝gnome-tweaks桌面管理工具 sudo apt install gnome-tweaksaltf2 在運行窗口輸入 gnome-tweaks 命令&#xff0c;然后回車打開優化窗口&#xff0c;選擇第二個front字體選項ubuntu顯示中文

C語言 文件的讀寫

引入 OS操作系統 打開文件fopen()函數 讀寫模式: r:讀取已有文件 w:文件不存在,創建文件并寫入文件.文件存在,內容清零,再寫入文件 a: 文件不存在,創建文件并寫入文件.文件存在,以追加的形式寫入文件 r:讀寫已有文件 w:文件不存在,創建文件并讀寫文件.文件存在,內容清零,再…

StarWind V2V Image Converter:虛擬機鏡像轉換工具,可將 IMG 文件轉換為 VMware VMDK 文件

操作流程 選擇本地的需要轉換的文件找到源文件的路徑&#xff0c;img格式選擇轉化后的格式 第一個選擇 第二個 速度快一些選擇將轉化后的文件的存儲路徑軟件的下載鏈接 鏈接: https://pan.baidu.com/s/1Fe6yI42Zz9d_Q7aUhGe1FQ 提取碼: 5vmv

數學建模基礎知識

原型與模型 模型的分類 數學建模 數學建模的分類 成為建模大神 數學建模比賽 數學建模一般步驟 數學建模全過程 數學建模論文寫作 1&#xff09;摘要:是決定最后獲獎等級的關鍵 2&#xff09;問題重述:使用自己的語言將問題重述一次 3&#xff09;符號說明:對于常見的或…

數學建模 線性規劃模型基本原理

線性規劃問題 例1.1 可行解&可行域 matlab標準形式及軟件求解 標準形式: C稱為價值向量 如果是求max,加一個負號-c^T 如果是求Ax>b,加一個負號-Ax<b 使用matlab求線性規劃例題 求解的是最大值:加上負號 y是求解的最優解 zeros()使用: zeros(n)&#xff1a;生…

接上文 ,解決 虛擬機VM,U盤(磁盤)裝有系統,將其中系統安裝到另外一塊磁盤的具體操作

問題原因&#xff1a;接上文&#xff0c;將生成的vsdk格式的磁盤導入VM創建鏡像&#xff0c;相關于U盤裝載系統鏡像&#xff0c;將U盤其中的鏡像導入到磁盤里邊&#xff0c;U盤是引導&#xff0c;會將系統最終裝載到磁盤出錯原因是因為 沒有新建第二塊磁盤 解決 新增一塊磁盤如…

數學建模 層次分析法

簡介 針對多目標,多準則或無結構特性的復雜決策問題 步驟 解決評價類問題 評價類問題: 資料查找: 1)查找相關文獻 2)如果沒有找到相關文獻 3)搜索 通過上述步驟后得到的結果 構建層次結構模型 舉例: 成對比較矩陣 標度表: 奇數:越大越重要 偶數:上述兩相鄰判斷的中值…

ubuntu配置靜態IP地址

sysconf_client update -t network -j {"netdev":"eth0","ip":"a.b.c.d","mask":"255.255.255.0"}

接上文 VM安裝的ubuntu系統,配置雙網卡

點擊編輯 進入虛擬網絡編輯器 點擊更改設置 補充&#xff1a;如何判定橋接至哪張網卡&#xff1f;進入win&#xff0c;winr 輸入cmd&#xff1b;輸入 systeminfo選中系統&#xff0c;點擊右鍵&#xff0c;選中設置 重啟系統使用 ifconfig查看&#xff0c;發現有eth0和eth1…

數學建模 趣味數模問題(數模入門)

狼羊人菜渡河問題 解答 試探法 因為有4個變量,所以一共有222*216種狀態 找出其中不安全的狀態:無人看守的狀態下:狼羊一起,羊菜一起 人 狼 羊 菜(0是在對面,1是在這邊) 狼羊一起:(0,1,1,0) (0,1,1,1) (1,0,0,0) (1,0,0,1) 羊菜一起:(0,0,1,1) (1,1,0,0) 其余的10個都是安全狀態…

數學建模 整數規劃的基本原理和標準形式

整數規劃模型 變量限制為整數 一般解決運輸問題和整數問題 分類: 研究的是純整數規劃問題 整數規劃特點 實數的解不能直接四舍五入為整數,因為此時可能不滿足約束條件 舉例-合理下料問題 模型: 題目: 這是在使用材料 1)使用零件A1-Am毛胚,就是使用零件 2)下料方式B1-Bn就…

程序員 面試筆記 C++ 程序設計的基礎 第10章

10.1.1 程序的編譯和執行 以#開頭的代碼都屬于預處理器處理的步驟#include 將頭文件的內容包含進入當前源文件中#define 展開宏定義#ifdef 處理條件編譯指令(#ifdef、ifndef、#if、#else、#elif、#endif)#other 處理其他宏指令(#error、#warning、#line、#pragma) 預…

數學建模 分支限界算法求解整數規劃原理以及編程實現

引入 線性規劃問題(松弛問題) 圖解法: 使用圖解法求出最優解,再使用四舍五入求出的整數解不滿足條件 完全枚舉法(窮舉法):找出集合內所有滿足條件的整數點,再帶入不等式中,看是否有最優解 分支限界法 說明: 松弛問題:線性規劃問題 ILP:整數規劃,在線性規劃的基礎上對決策…