精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    19178

    瀏覽量

    229200
  • 單片機
    +關注

    關注

    6032

    文章

    44525

    瀏覽量

    633243
  • keil
    +關注

    關注

    68

    文章

    1212

    瀏覽量

    166701
  • 編譯器
    +關注

    關注

    1

    文章

    1618

    瀏覽量

    49057

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

文章出處:【微信號: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 ?4640次閱讀
    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 ?5271次閱讀

    用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 ?921次閱讀
    如何用不同方法驗證<b class='flag-5'>單片機變量</b>的<b class='flag-5'>大小</b>呢?

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

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

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

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

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

    變壓器容量大小輸入電壓、輸出電壓、輸入電流、輸出電流、頻率、變壓器的結構和材料等多個因素決定的。 首先,輸入電壓和輸出電壓的大小會直接影響變壓器的容量。通常情況下,變壓器的輸入電壓
    的頭像 發表于 03-24 10:07 ?5495次閱讀