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

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

3天內不再提示

char是有符號類型還是無符號類型?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-03-17 10:15 ? 次閱讀

看一個C語言的筆試題,題目很簡單,問char是有符號類型還是無符號類型?

看到這個題目的時候,我毫不猶豫的選擇了一個錯誤答案。

在大部分人的認知中,C語言數據類型前面的signed是可以省略的,比如:

int a;
其實等價于:
signed int a;
也就是 a 表示有符號整型。 如果想要定義無符號整型,可以寫成:
unsigned int a;
前面的 unsigned 不能省略。

但是 char 類型卻除外。

寫個代碼測試一下,有符號 char 表示范圍 -128 - 127,無符號 char 表示范圍 0 - 255。

我們只要定義一個 char 類型等于 127,讓他加一后,看結果大于 0 還是小于 0 就行。

先用 Ubuntu 里面的 gcc 來編譯,結果是有符號數。

換成 arm-linux-gcc,在ARM架構的開發板上運行,結果是無符號數。

最后再來看下C標準,他把這種行為稱為:
implementation defined
就是讓編譯器自己去決定,所以不同的環境下面,char表示的確實不一樣。

如果考慮到移植,一定要謹慎使用。




審核編輯:劉清

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

    關注

    180

    文章

    7542

    瀏覽量

    131037
  • ARM架構
    +關注

    關注

    14

    文章

    168

    瀏覽量

    36021
  • char
    +關注

    關注

    0

    文章

    11

    瀏覽量

    3551
  • gcc編譯器
    +關注

    關注

    0

    文章

    78

    瀏覽量

    3247

原文標題:char屬于有符號還是無符號

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    符號數,符號數,浮點數探討

    本帖最后由 hq1987 于 2015-4-29 11:52 編輯 對于符號數大家都基本理解,我主要說說符號數,浮點數在機器世界里到底是怎么表示的。1、
    發表于 04-29 10:15

    跟著狄泰唐老師學C語言進階教程的筆記之有符號符號

    ——> MIN_VALUEB. MIN_VALUE-1 ——> MAX_VALUE4. signed和unsignedl C語言中變量默認為符號類型l unsigned 關鍵字聲明為
    發表于 05-16 21:43

    DSP指令——符號32位飽和為符號8位

    hi,everyone: 我做優化時候,需要將一個符號的32位 ?int 類型的數,做一個飽和操作,變成一個 符號的8位的數。具體代碼如
    發表于 06-21 02:36

    帶有無符號字符的隱式類型轉換

    大家好,我正在寫一個需要使用符號字符的程序。但是,每當我使用一個算術運算符或位運算符時,總是會得到“隱式簽名到符號轉換”警告。結果是,在沒有警告的情況下生成以下內容:例如:
    發表于 10-25 16:53

    隱式簽名到符號警告

    您好,我很少關注隱式簽名到符號轉換警告。為什么所有的變量都被聲明為符號,我仍然得到這個警告?上面例子中的值是否被視為
    發表于 11-06 14:43

    符號類型與整數文字不匹配

    什么嗎? case和if / elsif之間區別嗎?signal rx_count:unsigned(15 downto 0);case rx_count是當15 =>- 這就產生了“符號
    發表于 03-05 12:53

    請問AFE5801 AD轉換后數字信號是用符號還是符號數表示?

    請問AFE5801 AD轉換后數字信號是用符號還是符號數表示的???
    發表于 05-24 08:04

    1.2FreeRTOS中的數據類型

    數。 如果 BaseType_t 被定義成了 char 型,要特別 注意將其設置為符號數,因為部分函數的返回值是用負數來表示錯誤類型。UBaseType_t這個數據
    發表于 07-22 23:27

    雙狀態符號/符號數據類型

    雙狀態符號數據類型雙狀態符號數據類型四狀態數據類型
    發表于 01-18 06:03

    C語言單片機編程為什么總是用符號的數據類型來定義

    注意:答案和題目均轉自百度知道char型可以表示數的范圍是-128到127,所占位數是8位int型可以表示數的范圍是-32768到32767,所占位數是16位假如用符號的數據類型表示
    發表于 07-01 08:07

    char字符型基本含義

    時,既不是符號,也不是符號。char字符型基本含義: 字符數據類型(字節大小為1)eg: ‘
    發表于 11-05 08:14

    stm32符號8位轉換為int類型的方法是什么

    stm32符號8位轉換為int類型的方法是什么
    發表于 12-20 07:14

    SpinalHDL的UInt與SInt數據類型能夠進行符號/符號數操作

    在Bits的基礎上,SpinalHDL提供了UInt、SInt數據類型,從而能夠進行符號/符號數操作。變量定義/初始化UInt/SInt
    發表于 07-14 14:45

    C語言為什么浮點型沒有無符號類型?

    C語言為什么浮點型沒有無符號類型
    發表于 06-14 09:05

    高效的C編程之變量類型

    。 表14.2 C編譯器數據類型映射 C數據類型表示的意義 char符號8位字節數據 short有符號16位半字數據 int有
    發表于 10-17 16:50 ?3次下載
    高效的C編程之變量<b class='flag-5'>類型</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>