在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機變量存儲大小由什么決定?

strongerHuang ? 來源:strongerHuang ? 2024-01-26 10:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近看到群友在討論【單片機變量存儲大小由什么決定?】的話題。

比如:int、long int 有多大?結構體占多大空間?

描述

在實際情況中,不同的處理器架構、操作系統、以及編譯器等都不是決定整形變量大小的關鍵因素,比如:51、ARM、x86、x64等不同的處理器架構,FreeRTOSLinux、Windows等不同的操作系統,gcc、AC、clang等不同編譯器。

主要是處理器位數決定。(當然,目前我驗證過的所有情況是由處理器位數決定,其他決定性因素有待考證)

首先,整型變量大小由編譯器(編譯)得來,而編譯器首先會考慮編譯環境(這個環境主要是CPU的位數)。

之前給大家分享過《Keil驗證8位和32位單片機變量占用空間大小》,其中就體現了8位和32位CPU中變量占用空間的大小。

驗證

之前分享《用Keil驗證8位和32位單片機變量占用空間大小》的內容,主要在Keil這個編譯環境下,通過編譯大小驗證。

這其中是想描述Keil環境下CPU位數,以及大小端對變量占用空間大小的影響。

而最直接的辦法則是通過sizeof得出大小,打印出來。 這里額外提一下sizeof 和 sizeof 的區別:

sizeof通常計算變量大小,strlen計算字符串長度

sizeof是運算操作符,strlen是函數

sizeof在編譯的時候得出大小,strlen要考慮’\0字符的長度

例子源代碼:

#include 


intmain(void)
{
  printf( "         char: %d
" , sizeof(char));
  printf( "    short int: %d
" , sizeof(short int));
  printf( "          int: %zd
" , sizeof(int));
  printf( "     long int: %d
", sizeof(long int));
  printf( "long long int: %d
", sizeof(long long int));
  printf( "        float: %d
", sizeof(float));
  printf( "       double: %d
", sizeof(double));


  return 0;
}

大家可以試著用不同的編譯環境試試上面這部分代碼,看看有什么差別。

這里簡單舉例兩個:

1.Keil MDK編譯,直接下載在STM32中串口打印輸出。

9ffe3da0-bbe1-11ee-8b88-92fbcf53809c.png

串口輸出結果:

         char: 1
    short int: 2
          int: 4
     long int: 4
long long int: 8
        float: 4
       double: 8

a0027e9c-bbe1-11ee-8b88-92fbcf53809c.png

2.在線編譯器 這里我用的在線編譯器,網址: https://rextester.com/l/c_online_compiler_gcc (復制到瀏覽器直接打開即可) gcc編譯:

a0061610-bbe1-11ee-8b88-92fbcf53809c.png




clang編譯:

a00aadc4-bbe1-11ee-8b88-92fbcf53809c.png




以及其他環境,輸出情況都一樣,因為是在同一臺電腦(操作系統、CPU位數都一樣)。

         char: 1
    short int: 2
          int: 4
     long int: 8
long long int: 8
        float: 4
       double: 8
如果你換到平臺,可能結果就不一樣了。通過對比各種結果,你自然會得出結論。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19852

    瀏覽量

    234176
  • 單片機
    +關注

    關注

    6067

    文章

    44961

    瀏覽量

    648853
  • keil
    +關注

    關注

    69

    文章

    1223

    瀏覽量

    169343
  • 編譯器
    +關注

    關注

    1

    文章

    1659

    瀏覽量

    50053

原文標題:單片機變量存儲大小由什么決定?

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    手機擴展內存的大小 什么決定

    手機擴展內存的大小 什么決定?謝謝
    發表于 07-30 16:43

    單片機視頻教程07:變量

    《手把手教你學單片機單片機視頻教程07:變量 單片機視頻教程07:變量 1、局部變量,在函數內
    發表于 08-21 09:35 ?1.2w次閱讀
    <b class='flag-5'>單片機</b>視頻教程07:<b class='flag-5'>變量</b>

    Keil C51單片機變量的使用方法詳細介紹

    8051內核單片機是一種通用單片機,在國內占有較大的市場份額。在將C語言用于51內核單片機的研究方面,Keil公司做得最為成功。由于51內核單片機
    發表于 11-24 10:20 ?5048次閱讀
    Keil C51<b class='flag-5'>單片機變量</b>的使用方法詳細介紹

    51單片機RAM數據存儲區的學習筆記資料免費下載

    RAM是程序運行中存放隨機變量的數據空間。在keil中編寫程序,如果當前模式為small模式,如果總的變量大小未超過128B,則未初始化的變量的初值默認為0.如果所有的變量超過
    發表于 03-13 15:16 ?4次下載
    51<b class='flag-5'>單片機</b>RAM數據<b class='flag-5'>存儲</b>區的學習筆記資料免費下載

    51單片機RAM數據存儲區學習筆記的詳細資料說明

    RAM是程序運行中存放隨機變量的數據空間。在keil中編寫程序,如果當前模式為small模式,如果總的變量大小未超過128B,則未初始化的變量的初值默認為0.如果所有的變量超過
    發表于 04-15 18:24 ?0次下載
    51<b class='flag-5'>單片機</b>RAM數據<b class='flag-5'>存儲</b>區學習筆記的詳細資料說明

    51單片機的RAM數據存儲區學習知識點筆記免費下載

    所有的變量超過單片機small模式下的128B大小,則必須對變量進行初始化,否則超過RAM大小變量
    發表于 09-17 17:21 ?0次下載
    51<b class='flag-5'>單片機</b>的RAM數據<b class='flag-5'>存儲</b>區學習知識點筆記免費下載

    51單片機變量存儲類型有什么區別

    本文檔的主要內容詳細介紹的是51單片機變量存儲類型有什么區別。
    發表于 07-03 17:41 ?0次下載
    51<b class='flag-5'>單片機</b>中<b class='flag-5'>變量</b>的<b class='flag-5'>存儲</b>類型有什么區別

    單片機的常量和變量與數組的詳細資料說明

    本文檔的主要內容詳細介紹的是單片機的常量和變量與數組的詳細資料說明包括了:單片機的常量,單片機變量,構造類型:數組,構造類型:結構體,構造
    發表于 12-11 17:36 ?13次下載
    <b class='flag-5'>單片機</b>的常量和<b class='flag-5'>變量</b>與數組的詳細資料說明

    如何用Keil來驗證單片機變量占多少字節

    ? ? 首先問大家兩個問題: 8位單片機定義一個? int ?型變量,占幾個字節? 32位 單片機定義一個? char ?型變量,占幾個字節? ? 我敢說很多人都不知道,或者存在疑惑。
    的頭像 發表于 10-29 10:20 ?5824次閱讀

    用Keil驗證8位和32位單片機變量占用空間大小

    關注+星標公眾號,不錯過精彩內容作者 | strongerHuang微信公眾號|嵌入式專欄首先問大家兩個問題:8位單片機定義一個 int型變量,占幾個字節?32位單片機定義一個 ch...
    發表于 11-18 19:51 ?10次下載
    用Keil驗證8位和32位<b class='flag-5'>單片機變量</b>占用空間<b class='flag-5'>大小</b>

    PyTorch教程22.6之隨機變量

    電子發燒友網站提供《PyTorch教程22.6之隨機變量.pdf》資料免費下載
    發表于 06-06 09:24 ?0次下載
    PyTorch教程22.6之隨<b class='flag-5'>機變量</b>

    如何用不同方法驗證單片機變量大小呢?

    有人說單片機開發很簡單,也有人說很難。
    發表于 06-26 09:11 ?1340次閱讀
    如何用不同方法驗證<b class='flag-5'>單片機變量</b>的<b class='flag-5'>大小</b>呢?

    單片機位帶牽涉的指針變量問題

    單片機位帶牽涉的指針變量問題
    的頭像 發表于 09-27 15:18 ?709次閱讀
    <b class='flag-5'>單片機</b>位帶牽涉的指針<b class='flag-5'>變量</b>問題

    接近開關的大小和種類什么來決定

    接近開關的大小和種類什么來決定? 近開關的大小和種類多個因素來決定,下面將從材料、尺寸、電流
    的頭像 發表于 01-03 17:13 ?839次閱讀

    變壓器容量大小什么決定的原理

    變壓器容量大小輸入電壓、輸出電壓、輸入電流、輸出電流、頻率、變壓器的結構和材料等多個因素決定的。 首先,輸入電壓和輸出電壓的大小會直接影響變壓器的容量。通常情況下,變壓器的輸入電壓
    的頭像 發表于 03-24 10:07 ?7984次閱讀
    主站蜘蛛池模板: 国产伦子系列视频6 | 亚综合| 色综合中文字幕 | 高清视频在线播放 | 国产做a爰片久久毛片a | 夜夜精品视频一区二区 | 欧美深深色噜噜狠狠yyy | 久久香蕉综合色一综合色88 | 午夜视频黄色 | 亚1州区2区三区4区产品 | japan高清视频乱xxxxx | 最新日本免费一区二区三区中文 | 色吧亚洲欧美另类 | 男啪女视频免费观看网站 | 四虎院影永久在线观看 | 午夜国产精品久久久久 | 国产精品嫩草影院一二三区入口 | fxxx性xxx性 | 国产黄大片在线观看 | 国内精品久久影视 | 一区二区福利 | 你懂的在线免费 | 免费的三及片 | 毛片一区二区三区 | 欧美一区二区影院 | 欧美第四色 | 国产内地激情精品毛片在线一 | 美女黄页在线观看 | 久久国产视频一区 | 天天伊人 | 一级特黄国产高清毛片97看片 | 欧美黑人性受xxxx喷水 | 日本在线色视频 | 国产精品va一区二区三区 | 2021最新国产成人精品视频 | 美女露出尿囗 | 手机在线视频观看 | 日本aaaa毛片在线看 | 成人永久免费视频 | 亚洲成a人片在线观看中 | 中国性猛交xxxxx免费看 |