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

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

3天內不再提示

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

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

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

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

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

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

但是 char 類型卻除外。

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

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

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

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

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

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




審核編輯:劉清

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

    關注

    180

    文章

    7581

    瀏覽量

    135539
  • ARM架構
    +關注

    關注

    14

    文章

    176

    瀏覽量

    36227
  • char
    +關注

    關注

    0

    文章

    11

    瀏覽量

    3698
  • gcc編譯器
    +關注

    關注

    0

    文章

    78

    瀏覽量

    3332

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

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

收藏 人收藏

    評論

    相關推薦

    關于verilog中的符號數(shù)和符號數(shù)

    在數(shù)字電路中,出于應用的需要,我們可以使用符號數(shù),即包括0及整數(shù)的集合;也可以使用符號數(shù),即包括0和正負數(shù)的集合。在更加復雜的系統(tǒng)中,也許這兩種
    的頭像 發(fā)表于 11-18 17:46 ?1.7w次閱讀

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

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

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

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

    符號類型與整數(shù)文字不匹配

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

    雙狀態(tài)符號/符號數(shù)據(jù)類型

    雙狀態(tài)符號數(shù)據(jù)類型雙狀態(tài)符號數(shù)據(jù)類型四狀態(tài)數(shù)據(jù)類型
    發(fā)表于 01-18 06:03

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

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

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

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

    SpinalHDL的UInt與SInt數(shù)據(jù)類型能夠進行符號/符號數(shù)操作

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

    高效的C編程之變量類型

    14.2 C編譯器數(shù)據(jù)類型映射 C數(shù)據(jù)類型表示的意義 char符號8位字節(jié)數(shù)據(jù) short
    發(fā)表于 10-17 16:50 ?3次下載
    高效的C編程之變量<b class='flag-5'>類型</b>

    fpga 符號數(shù)、符號數(shù)

    ?在設計中,所有的算數(shù)運算符都是按照符號數(shù)進行的。如果要完成符號數(shù)計算,對于加、減操作通過補碼處理即可用
    的頭像 發(fā)表于 10-09 15:22 ?5982次閱讀
    fpga <b class='flag-5'>有</b><b class='flag-5'>符號</b>數(shù)、<b class='flag-5'>無</b><b class='flag-5'>符號</b>數(shù)

    plc位、字節(jié)、字、雙字、符號符號數(shù)據(jù)類型的關系

    plc位、字節(jié)、字、雙字、符號符號的關系以下內容由深圳市綜科智控科技開發(fā)有限公司編輯整理 2021/08/18前言:很多同學在PLC開發(fā)過程中,因為數(shù)據(jù)
    發(fā)表于 12-29 18:52 ?2次下載
    plc位、字節(jié)、字、雙字、<b class='flag-5'>有</b><b class='flag-5'>符號</b>、<b class='flag-5'>無</b><b class='flag-5'>符號數(shù)據(jù)類型</b>的關系

    關于符號數(shù)據(jù)類型的示例

    我們學習一下Systemverilog中的符號數(shù)據(jù)類型的賦值。
    的頭像 發(fā)表于 10-17 14:40 ?933次閱讀

    匯編基礎知識教程之數(shù)據(jù)類型與寄存器

    數(shù)據(jù)類型 這是 ARM 匯編基礎知識系列教程的第二部分,涉及數(shù)據(jù)類型和寄存器。 與高級語言類似,ARM支持對不同數(shù)據(jù)類型的操作。我們可以加載(或存儲)的數(shù)據(jù)類型可以是
    的頭像 發(fā)表于 01-30 15:06 ?950次閱讀
    匯編基礎知識教程之數(shù)據(jù)<b class='flag-5'>類型</b>與寄存器

    PLC數(shù)據(jù)類型匯總表

    數(shù)據(jù)類型前面的U為符號,例如UINT為符號16位整數(shù)。INT位
    的頭像 發(fā)表于 09-19 12:51 ?2971次閱讀

    verilog中數(shù)據(jù)的符號屬性(符號數(shù)和符號數(shù))探究根源

    為了省流,還是先甩結論。符號數(shù)和符號數(shù)的最本質區(qū)別就是:符號位的識別和高位拓展。除此之外,另
    的頭像 發(fā)表于 12-10 10:50 ?1281次閱讀
    verilog中數(shù)據(jù)的<b class='flag-5'>符號</b>屬性(<b class='flag-5'>有</b><b class='flag-5'>符號</b>數(shù)和<b class='flag-5'>無</b><b class='flag-5'>符號</b>數(shù))探究根源