看一個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,讓他加一后,看結(jié)果大于 0 還是小于 0 就行。
先用 Ubuntu 里面的 gcc 來編譯,結(jié)果是有符號數(shù)。
換成 arm-linux-gcc,在ARM架構(gòu)的開發(fā)板上運行,結(jié)果是無符號數(shù)。
最后再來看下C標準,他把這種行為稱為:
implementation defined就是讓編譯器自己去決定,所以不同的環(huán)境下面,char表示的確實不一樣。
如果考慮到移植,一定要謹慎使用。
審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136824 -
ARM架構(gòu)
+關(guān)注
關(guān)注
14文章
177瀏覽量
36312 -
char
+關(guān)注
關(guān)注
0文章
11瀏覽量
3723 -
gcc編譯器
+關(guān)注
關(guān)注
0文章
78瀏覽量
3385
原文標題:char屬于有符號還是無符號
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
關(guān)于verilog中的無符號數(shù)和有符號數(shù)
在數(shù)字電路中,出于應(yīng)用的需要,我們可以使用無符號數(shù),即包括0及整數(shù)的集合;也可以使用有符號數(shù),即包括0和正負數(shù)的集合。在更加復雜的系統(tǒng)中,也許這兩種
跟著狄泰唐老師學C語言進階教程的筆記之有符號與無符號
——> MIN_VALUEB. MIN_VALUE-1 ——> MAX_VALUE4. signed和unsignedl C語言中變量默認為有符號的類型l unsigned 關(guān)鍵字聲明為無
發(fā)表于 05-16 21:43
無符號類型與整數(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ù)類型來定義
注意:答案和題目均轉(zhuǎn)自百度知道char型可以表示數(shù)的范圍是-128到127,所占位數(shù)是8位int型可以表示數(shù)的范圍是-32768到32767,所占位數(shù)是16位假如用有符號的數(shù)據(jù)類型表示
發(fā)表于 07-01 08:07
SpinalHDL的UInt與SInt數(shù)據(jù)類型能夠進行有符號/無符號數(shù)操作
在Bits的基礎(chǔ)上,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次下載
fpga 有符號數(shù)、無符號數(shù)
?在設(shè)計中,所有的算數(shù)運算符都是按照無符號數(shù)進行的。如果要完成有符號數(shù)計算,對于加、減操作通過補碼處理即可用無
plc位、字節(jié)、字、雙字、有符號、無符號數(shù)據(jù)類型的關(guān)系
plc位、字節(jié)、字、雙字、有符號、無符號的關(guān)系以下內(nèi)容由深圳市綜科智控科技開發(fā)有限公司編輯整理 2021/08/18前言:很多同學在PLC開發(fā)過程中,因為數(shù)據(jù)
發(fā)表于 12-29 18:52
?2次下載
匯編基礎(chǔ)知識教程之數(shù)據(jù)類型與寄存器
數(shù)據(jù)類型
這是 ARM 匯編基礎(chǔ)知識系列教程的第二部分,涉及數(shù)據(jù)類型和寄存器。
與高級語言類似,ARM支持對不同數(shù)據(jù)類型的操作。我們可以加載(或存儲)的數(shù)據(jù)類型可以是
verilog中數(shù)據(jù)的符號屬性(有符號數(shù)和無符號數(shù))探究根源
為了省流,還是先甩結(jié)論。有符號數(shù)和無符號數(shù)的最本質(zhì)區(qū)別就是:符號位的識別和高位拓展。除此之外,另
原理圖符號引腳的電氣類型
“ ?引腳是原理圖符號中最重要的對象,在繪制引腳時,可以選擇引腳的電氣類型,比如輸入、輸出、高阻等。本文將介紹引腳電氣類型的含義及其應(yīng)用。 ? ” 引腳的電氣類型
評論