09:C語言進階篇一

C語言進階篇一

  • 數據類型
    • 1.1、內存占用與sizeof運算符
    • 1.2、有符號數和無符號數
    • 1.3、整形數和浮點型數存儲方式
    • 1.4、數據類型轉換
      • 1.4.1、隱式轉換
      • 1.4.2、強制轉換

數據類型

基本數據類型:char,short,int,long,float,double
復合數據類型:數組,結構體,共用體,類(C語言沒有類型,C++有)

1.1、內存占用與sizeof運算符

變量存儲在內存中,需要占用一定的內存空間。計算機存儲數據都是以補碼的形式來進行存儲的。一個變量占用多少空間是由變量的數據類型決定的。每種數據類型,在不同的機器平臺上占用內存是不同的。我們一般講的時候都是以32位CPU為默認硬件平臺來描述:

char 		1字節		8位
short 		2字節		16位
int 		4字節		32位
long 		4字節		32位
float 		4字節		
double		8字節

1.2、有符號數和無符號數

1、對于char short int long等整形類型的數,都分有符號有無符號數。
2、而對于float和double這種浮點型數來說,只有有符號數,沒有無符號數。
3、對于有符號數和無符號數來說,存儲方式不同的。譬如對于char來說unsigned char無符號數,8位(1字節)全部用來存數的內容 ,而無符號數的補碼就是原碼。所以表示的數的范圍是0(補碼:為0000 0000) ~ 255(補碼為:1111 1111)
4、signed char表示有符號數,8位中最高位用來存符號(0表示正數,1表示負數),剩余的7位用來存數據。所以可以表示的數的范圍是 -128~127(補碼為:0111 1111)。==對于正數,補碼和原碼相同。-128(補碼是1 1000 0000)。但是是8位,所以最前面的那個1溢出了,直接丟棄。

1.3、整形數和浮點型數存儲方式

對于float和double這種浮點類型的數,它在內存中的存儲方式和整形數不一樣。所以float和int相比,雖然都是4字節,但是在內存中存儲的方式完全不同。所以同一個4字節的內存,如果存儲時是按照int存放的,取的時候一定要按照int型方式去取。如果存的時候和取的時候理解的方式不同,那數據就完全錯了。

#include <stdio.h>int main(void)
{int a = 123;printf("%f\n",a);//將int類型以float形式取出來進行輸出。return 0;
}

0.000000

總結:存取方式上主要有兩種,一種是整形一種是浮點型,這兩種存取方式完全不同,沒有任何關聯,所以是絕對不能隨意改變一個變量的存取方式。在整形和浮點型之內,譬如說4種整形char、short、int、long只是范圍大小不同而已,存儲方式是一模一樣的。float和double存儲原理是相同的,方式上有差異,導致了能表示的浮點型的范圍和精度不同。

#include <stdio.h>int main(void)
{int a = 123;float b = a;	//將a里面的數取出來以float形式存儲printf("%f\n",b);return 0;
}

123.000000

1.4、數據類型轉換

不同類型的數據進行運算時,需要轉化為同一類型,才進行運算。

1.4.1、隱式轉換

代碼①:

#include <stdio.h>int main(void)
{int a = 3;float b = 3.5;printf("a+b = %f\n",a+b);printf("a+b = %d\n",a+b);printf("a = %f\n",a);printf("a = %d\n",a);return 0;
}

a+b = 6.500000
a+b = 0
a = 0.000000
a = 3

  • 由輸出可知:int類型和float類型進行運算時,運算的過程中int類型a會自動轉換為float類型的臨時變量f1,然后l臨時變量f1在和float類型b進行運算。生成一個臨時變量float類型f2,最后由%f取出進行輸出
  • 由printf(“a = %f\n”,a);可以得出,int類型a轉換為臨時float類型f1。其實是將a變量里面的值取出來,放在一個float類型的變量中,而a中的變量還是int類型。

代碼②:

#include <stdio.h>int main(void)
{int a = 3;float b = 3.5;int c;c = a+b;printf("c =  %d\n",c);return 0;
}

c = 6

  • 由輸出可知:int類型a先轉換為float臨時變量f1,然后在和float變量b進行運算,生成一個臨時變量f2。將這個臨時變量f2的值取出來賦給int類型的變量c,最后由%d取出進行輸出

1.4.2、強制轉換

#include <stdio.h>int main(void)
{int a = 3;float b = 3.5;printf("a+b=%d\n",(int)(a+b));return 0;
}

a+b=6

  • a+b運算生成的本來是float類型的臨時變量f2,然后通過強制類型轉換為int類型,最后由%d取出進行輸出

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

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

相關文章

什么是RLHF(基于人類反饋的強化學習)?

什么是RLHF&#xff08;基于人類反饋的強化學習&#xff09;&#xff1f; 基于人類反饋的強化學習&#xff08;Reinforcement Learning from Human Feedback, RLHF&#xff09;是一種結合強化學習和人類反饋的技術&#xff0c;用于訓練智能體&#xff0c;使其行為更符合人類期…

哪些類型的工作需要六西格瑪綠帶培訓?

一、六西格瑪綠帶是什么&#xff1f; 首先&#xff0c;讓我們來了解一下六西格瑪綠帶。六西格瑪綠帶是六西格瑪管理體系中的一個重要角色&#xff0c;他們通常負責在項目中執行六西格瑪方法和工具&#xff0c;協助黑帶完成復雜的項目任務。綠帶需要掌握基本的六西格瑪知識和技…

OpenJudge | 最高的分數

目錄 描述輸入輸出樣例輸入樣例輸出思路方法一方法二 CodeCC 總時間限制: 1000ms 內存限制: 65536kB 描述 孫老師講授的《計算概論》這門課期中考試剛剛結束&#xff0c;他想知道考試中取得的最高分數。因為人數比較多&#xff0c;他覺得這件事情交給計算機來做比較方便。你能…

蘿卜快跑:未來出行的雙刃劍

歡迎來到 破曉的歷程的 博客 ??不負時光&#xff0c;不負己?? 在這個日新月異的科技時代&#xff0c;無人駕駛技術正以前所未有的速度改變著我們的出行方式。蘿卜快跑&#xff0c;作為自動駕駛出租車領域的佼佼者&#xff0c;其出現無疑為城市交通注入了新的活力&#xff…

如何在在system_real_robot.launch修改訂閱的雷達

在 system_real_robot.launch 文件中修改訂閱的雷達,以使用開源 SLAM 包(如 FastLIO 和 TARE)輸出的優化后雷達話題。可以讓你的系統使用這些 SLAM 包提供的高精度雷達數據。 假設你的 Launch 文件中包括這一行: xml <param name="registeredScanTopic" ty…

Kylin系列(六)查詢優化:提升 Kylin 查詢性能

目錄 1. Kylin查詢優化的基礎知識 1.1 Kylin的架構概述 1.2 Cube的構建與存儲 2. 索引設計與優化 2.1 選擇適當的維度和度量 2.2 使用層級維度 2.3 使用字典編碼 3. 查詢改寫與優化 3.1 選擇合適的查詢語法 3.2 避免不必要的計算 3.3 使用過濾條件 4. Cube設計優化…

政企單位光纖資源高效管理與優化策略

引言 隨著信息技術的飛速發展&#xff0c;政企單位對于通信基礎設施的管理要求日益提高。然而&#xff0c;傳統的管理模式&#xff0c;如Excel表格記錄和紙質審批流程&#xff0c;已難以滿足當前復雜多變的業務需求。在此背景下&#xff0c;我們實施了光纖管理的數字化轉型項目…

雙棧實現一個隊列

兩個棧可實現將列表倒序&#xff1a;設有含三個元素的棧 A [1,2,3] 和空棧 B [] 。若循環執行 A 元素出棧并添加入棧 B &#xff0c;直到棧 A 為空&#xff0c;則 A [] , B [3,2,1] &#xff0c;即棧 B 元素為棧 A 元素倒序。 利用棧 B 刪除隊首元素&#xff1a;倒序后&am…

自定義異步線程服務

異步線程池配置&#xff1a; /*** 啟動異步線程-并配置線程池*/ Configuration EnableAsync public class AsyncConfig {Bean(name "taskExecutor")public Executor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setC…

玩轉springboot之SpringBoot單元測試

SpringBoot單元測試 spring單元測試 之前在spring項目中使用單元測試時是使用注解RunWith(SpringJUnit4ClassRunner.class)來進行的 RunWith(SpringJUnit4ClassRunner.class)// 通過自動織入從應用程序上下文向測試本身注入beanWebAppConfiguration // 指定web環境ContextConfi…

電商出海第一步,云手機或成重要因素

電商出海第一步并非易事&#xff0c;挑戰和機遇并存&#xff0c;出海企業或個人或將借助云手機從而達成商業部署全球化的目的&#xff1b; 下面我們從網絡穩定、數據安全、成本、以及多平臺適配方面來看&#xff0c;究竟為什么說云手機會成為出海的重要因素&#xff1b; 首先…

新手前端系列入門-什么是前端開發

一、什么是前端 前端&#xff0c;也稱為前端開發或客戶端開發&#xff0c;一般是指在構建網站或Web應用程序時&#xff0c;與用戶直接交互的部分。就是指那些我們在網頁上能看到、能直接跟用戶打交道的部分。 簡單來說&#xff0c;就是你打開一個網站&#xff0c;能看到的所有…

西門子大手筆又買一家公司,2024年“兩買”和“兩賣”的背后……

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》 更多的海量【智能制造】相關資料&#xff0c;請到智能制造online知識星球自行下載。 今年&#xff0c;這家全球工業巨頭不僅精準出擊&#xff0c…

第4章 引擎提供的著色器工具函數和數據結構

4.1 UnityShaderVariables.cginc文件中的著色器常量和函數 4.1.1 進行變換操作用的矩陣 1.判斷USING DIRECTIONAL LIGTH宏是否定義并分析與立體渲染相關的宏 立體多例化渲染技術的核心思想是一次向渲染管道上提交兩份待渲染的幾何體數據&#xff0c;減少繪制調用&#xff08;d…

【信創國產化】Nacos 2.3.2連接達夢數據庫

JeecgBoot 目前提供的nacos版本號 2.3.2已經支持與達夢數據庫對接。 jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos項目默認加入了達夢驅動和yml配置。如果你是老代碼&#xff0c;可以參考下面的步驟手工集成 項目地址&#xff1a;https://github.com/jeecgboot/JeecgBoot…

Anaconda 安裝與基本使用總結

最近需要在服務器上安裝和使用aconada&#xff0c;發現之前總是在網上找教程&#xff0c;每次都要找&#xff0c;很麻煩。這次就自己寫一個安裝筆記。以備日后使用。 1.服務器系統版本 ubuntu22.04 2. 軟件安裝 aconda軟件的安裝可以下面的教程&#xff08;實測有效&#xf…

斐波那契查找算法

斐波那契查找原理&#xff0c;僅僅改變了中間結點(mid)的位置&#xff0c;mid不再是中間或插值得到,而是位于黃金分割點附近&#xff0c;即midlowF(k-1)-1(F代表斐波那契數列) F[k]F[k-1]F[k-2],>(F[k]-1) (F[k-1]-1)(F[k-2]-1)1 說明:只要順序表的長度為F[k]-1,則可以將該…

arm64架構kvm情景分析 - type1型和type2型虛擬機管理器

內核版本&#xff1a;linux-v5.9 架構&#xff1a;arm64 1 type1型和type2虛擬機管理器 在arm64架構中&#xff0c;共有EL3到EL0四個異常級別&#xff0c;EL3異常級別最高。通常操作系統&#xff08;如linux&#xff09;運行在EL1&#xff0c;應用程序運行在EL0&#xff0c;EL…

Apache中使用CGI

Apache24 使用Visual Studio 2022 // CGI2.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。 // #include <stdio.h> #include <stdlib.h>#include <stdio.h>void main() {//設置HTML語言printf("Content-type:text/html\n\n&q…

柯橋外語學校【韓語干貨】“-? ??” VS “-?/?/? ??”

01 相同點 都可以用于動詞之后&#xff0c;且形式有相似之處。 &#xff08;1&#xff09;?? ?? ??? ?? ????. 敏鎬正在打電話。 &#xff08;2&#xff09;?? ?? ??? ???? ????. 黃珉正在學習英語。 &#xff08;3&#xff09;? ??? ? …