深入理解C語言中的整形提升與算術轉換

深入理解C語言中的整形提升與算術轉換

一.整形提升:概念與原理

在C語言中,整形提升(Integer Promotion)是一個重要但容易被忽視的概念。它指的是在表達式中,任何小于int類型的整型(如charshort)操作數在使用前都會被自動轉換為普通整型int

1.為什么需要整形提升?

  1. 硬件效率考慮:CPU的整型運算器通常以int長度為標準操作數長度,使用標準長度可以提高運算效率

  2. 精度保持:防止在運算過程中意外丟失數據精度

2.整形提升規則

整形提升按照變量的數據類型的符號位進行:

  • 有符號類型:高位補符號位

  • 無符號類型:高位補0

3.整形提升實例分析

示例1:指針操作與內存覆蓋
int main() {int arr[] = {1, 2, 3, 4, 5};short* p = (short*)arr;int i = 0;for(i = 0; i < 4; i++) {*(p + i) = 0; // 使用short指針修改int數組}for(i = 0; i < 5; i++) {printf("%d ", arr[i]);}return 0;
}

分析

  1. arr是一個包含5個int的數組

  2. short* p指向arr的首地址

  3. 循環中將前4個short位置設為0

  4. 由于int通常是4字節,short是2字節,所以前兩個int被完全置為0

  5. 輸出結果將是:0 0 3 4 5

示例2:char類型的整形提升
int main() {char a = -1;signed char b = -1;unsigned char c = -1;printf("%d %d %d ", a, b, c);return 0;
}

分析

  1. ab都是有符號char,值為-1(內存表示:0xFF)

  2. c是無符號char,賦值-1會轉換為255(0xFF)

  3. 當用%d打印時,發生整形提升:

    • ab:符號擴展為0xFFFFFFFF(即-1)

    • c:零擴展為0x000000FF(即255)

  4. 輸出結果:-1 -1 255

二.算術轉換規則

當表達式中存在不同類型的操作數時,C語言會進行自動類型轉換(稱為"算術轉換"),規則如下:

類型等級從低到高
int?→?unsigned int?→?long?→?unsigned long?→?long long?→?unsigned long long?→?float?→?double?→?long double

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

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

相關文章

編程題python常用技巧-持續

1.字典 1.1排序 在Python中&#xff0c;要按照字典的值進行排序&#xff0c;可以按照以下步驟操作&#xff1a; 方法說明 ?獲取鍵值對列表?&#xff1a;使用 dict.items() 獲取字典的鍵值對視圖。?排序鍵值對?&#xff1a;使用 sorted() 函數&#xff0c;并通過 key 參…

硬件工程師面試常見問題(11)

第五十一問&#xff1a;器件手冊的翻譯題目 要學英語啊&#xff0c;孩子。 第五十二問&#xff1a;二極管三極管常識題 1.二極管的導通電壓一般是 0.7V 2.MOS管根據摻雜類型可以分為 NMOS和PMOS 3.晶體三極管在工作時,發射結和集電結均處于正向偏置,該晶體管工作在一飽和態。…

mysql 配置文件中的[client]、[mysqld]、[mysqldump]和[mysql]區塊的作用區別

1. [client] 區塊 作用&#xff1a; 適用于 所有 MySQL 客戶端工具&#xff08;如 mysql 命令行客戶端、mysqldump、mysqladmin 等&#xff09;。 常見配置項&#xff1a; [client] host 127.0.0.1 # 默認連接的服務器地址 port 3306 # 默認端口 user root …

SARSA 算法詳解:python從零實現

喜歡可以訂閱專欄喲 第一章 強化學習基礎與核心概念 1.1 強化學習的定義與特點 強化學習(Reinforcement Learning, RL)是機器學習三大范式之一(監督學習、無監督學習、強化學習),其核心思想是通過智能體(Agent)與環境(Environment)的持續交互來學習最優策略。與監督…

(C題|社交媒體平臺用戶分析問題)2025年第二十二屆五一數學建模競賽(五一杯/五一賽)解題思路|完整代碼論文集合

我是Tina表姐&#xff0c;畢業于中國人民大學&#xff0c;對數學建模的熱愛讓我在這一領域深耕多年。我的建模思路已經幫助了百余位學習者和參賽者在數學建模的道路上取得了顯著的進步和成就。現在&#xff0c;我將這份寶貴的經驗和知識凝練成一份全面的解題思路與代碼論文集合…

AI重塑SEO關鍵詞策略

內容概要 傳統SEO策略主要依賴人工經驗與基礎工具進行關鍵詞布局&#xff0c;存在效率低、覆蓋維度單一等痛點。而AI技術的介入&#xff0c;使關鍵詞優化從靜態詞庫匹配轉向動態語義網絡構建。通過自然語言處理&#xff08;NLP&#xff09;與深度學習模型&#xff0c;AI不僅能…

【Unity】 組件庫分類詳解

1?? Audio&#xff08;音頻組件&#xff09; 用于處理游戲中的聲音。 Audio Source 讀音[???di?? ?s??s]&#xff0c;音頻源組件&#xff0c;用于播放音頻文件&#xff0c;可設置音量、Pitch、循環播放等屬性&#xff0c;是音頻播放的核心組件。 Audio Listener 讀音…

【區塊鏈】區塊鏈技術介紹

引言 區塊鏈技術自2008年中本聰提出比特幣概念以來&#xff0c;逐漸從加密貨幣的底層技術演變為一場顛覆傳統信任機制的全球性革命。它不僅重塑了金融體系&#xff0c;更在物流、醫療、政務等領域展現出巨大潛力。本文將用通俗易懂的語言&#xff0c;結合實例與原理&#xff0c…

MySQL零基礎入門:Ubuntu環境安裝與操作精解

知識點1【數據庫】 數據的存儲方式&#xff0c;我們之前學的&#xff0c;從變量&#xff0c;數組&#xff0c;鏈表&#xff0c;最后到文件&#xff0c;文件之上&#xff0c;便是數據庫&#xff0c;而我們要介紹的MySQL就是數據庫的關系數據庫中的其中一種。 1、數據庫 本質&…

力扣——23合并升序鏈表

目錄 1:題目描述&#xff1a; 2.算法思想&#xff1a; 3.代碼展示&#xff1a; 1:題目描述&#xff1a; 給你一個鏈表數組&#xff0c;每個鏈表都已經按升序排列。 請你將所有鏈表合并到一個升序鏈表中&#xff0c;返回合并后的鏈表。 示例 1&#xff1a; 輸入&#xff…

AI重構危化品進口清關:一場效率與安全的雙重革命

在全球化工產業鏈深度捆綁的今天&#xff0c;每年超過3億噸危險化學品通過中國各大口岸流入國內市場。這些支撐著新能源電池、半導體材料等戰略產業的“工業血液”&#xff0c;其進口清關流程卻長期困于效率與安全的兩難困境&#xff1a;人工審核單據平均耗時72小時&#xff0c…

牛客網題解 | 棧的壓入、彈出序列

棧的壓入、彈出序列 一、題目鏈接二、題目三、算法原理&#xff1a;用一個棧模擬入棧出棧的過程四、編寫代碼 一、題目鏈接 棧的壓入、彈出序列 二、題目 三、算法原理&#xff1a;用一個棧模擬入棧出棧的過程 思路&#xff1a;用一個棧模擬入棧出棧的過程&#xff0c;模擬出…

使用CubeMX新建DMA工程——存儲器到存儲器模式

目錄 1、新建板級支持包 2、修改main.c 3、程序流程 4、問題 新建工程的基本操作步驟參考這里&#xff1a; 【【野火】STM32 HAL庫開發實戰指南 教學視頻 手把手教學STM32全系列 零基礎入門CubeMXHAL庫&#xff0c;基于野火全系列STM32開發板】 https://www.bilibili.com/…

HTML5 新增的主要標簽整理

一、語義化標簽&#xff08;讓網頁結構更清晰&#xff09; 1. <header> 和 <footer> 定義&#xff1a;表示網頁的「頂部區域」和「底部區域」。場景&#xff1a; <header>&#xff1a;放 Logo、導航欄、搜索框。<footer>&#xff1a;放版權信息、聯系…

Mysql數據庫高可用解決方案-Mysql Router

目錄 一.MySQL Router介紹 1. 什么是 MySQL Router&#xff1f; 2. MySQL Router 的主要用途 3. MySQL Router 的工作原理 4. MySQL Router 的核心組件 5. MySQL Router 的部署和配置 6. MySQL Router 的優勢 7. 注意事項 8. MySQL Router 與其他工具的對比 9. 總結 …

【學習筆記】機器學習(Machine Learning) | 第六周|過擬合問題

機器學習&#xff08;Machine Learning&#xff09; 簡要聲明 基于吳恩達教授(Andrew Ng)課程視頻 BiliBili課程資源 文章目錄 機器學習&#xff08;Machine Learning&#xff09;簡要聲明 摘要過擬合與欠擬合問題一、回歸問題中的過擬合1. 欠擬合&#xff08;Underfit&#x…

當算力遇上堵車:AI如何讓城市血管不再“血栓”?

目錄 一、算力治堵的“外科手術” 二、算力治堵的“內科檢查” 三、算力治堵的“中醫調理” 治堵如治水,算力是新時代的“大禹” “堵車”是每個大城市的通病,但鮮少有人意識到:交通擁堵的根源并非車輛過多,而在于車速過慢,不是因為堵車才慢,而是因為慢才堵車。中國工…

VM虛擬機安裝CentOS7.9

目錄 1.下載CentOS7.9 2.VM虛擬機選擇自定義&#xff0c;然后一直傻瓜式下一步 3.選擇編輯虛擬機設置&#xff0c;然后選擇剛剛下載的ISO 4.輸入 ip addr 獲取ip地址 5.用Xshell連接 1.下載CentOS7.9 鏈接&#xff1a;https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…

文本解析到大模型應用

文本解析到到大模型應用 一、背景 最近接到一個比較惡心的工作&#xff0c;之前有個同事將很多個小的文檔整合到了一個大文檔中&#xff0c;同時暴露出一個新的問題&#xff0c;大的文檔雖然查找問題比較方便但是維護起來較為麻煩&#xff0c;所以需要將大的文檔按照標題拆分…

AWS虛擬專用網絡全解析:從基礎到高級實踐

導語 AWS虛擬專用網絡是連接企業本地數據中心與AWS云環境的關鍵橋梁。本文將深入探討AWS VPN的核心概念、配置方法、最佳實踐以及常見問題解決方案,助您構建安全、可靠的混合云網絡架構。 一、AWS VPN概述 1. 定義 AWS VPN是一種網絡服務,允許用戶通過加密隧道將本地網絡…