c語言中unsigned不應該是無符號數嗎?為什麼還是

2021-03-25 05:34:02 字數 5713 閱讀 9575

1樓:匿名使用者

顯示成有符號還是無符號,是根據printf的格式化引數來決定的。

%d是按照有符號輸出,%u是按照無符號輸出。

c語言中不是unsigned int不能表示負數嗎?

2樓:天天向上知識店鋪

unsigned表示無符號型,無符號型只能表示正值,不能表示負值。

c語言unsigned賦負值後以整型輸出還是賦值。為什麼?

3樓:傅螺六秀英

不是int存不下

而是你的棧空間不足

20萬就是200000*4=800000

需要800k左右的記憶體。

明顯棧溢位了

修改方法也很簡單

要麼用new動態分配

要麼定義成全域性變數

比如const unsigned int arrsize = 200000;

const unsigned int nstart = 10000;

const unsigned int nend = 99900;

int a[arrsize];

int main()

4樓:萊牧駱冬雁

輸出的時候型別是由

printf

的格式串指定的:

看看這個執行的結果你就明白:

intmain()

5樓:扶明軒轅懋

unsigned

定義的型別並不改變值在記憶體中的形式,這你要控制輸出為無符號型的,就像是我們如果定義一個char型別的,輸出如果用%d的話,那麼顯示的還是數字而不是字元。如果要輸出無符號型別的話,**u,如printf("%u",n);長整型的是%lu

,所以unsigned只是你希望定義的那個是無符號整型,但是輸出語句還是按照它的理解來翻譯,這就造成了一些小小的問題

就是要不要顯示符號,只在於你輸出的時候控制,而不在於你定義的時候如何定義。

c語言無符號整形和無符號短整型顯示負數結果為什麼不一樣?

6樓:匿名使用者

因為printf裡用%d來輸出某個變數時,程式會預設該變數為int型。如果該變數

是內整型,容但不是int,而是char或者short,程式會先把它轉換成int型,再傳給printf.

所以用unsigned int a=-12時,沒有上面所說的轉換步驟,%d當成有符號整數,輸出是-12,沒問題。

unsigned short a=-12時, 注意這時候a是16位,在記憶體中是11111111 11110100,轉換成int型會變成32位,程式在它的左邊會新增16個0,變成00000000 00000000 11111111 11110100,這時候符號位是0了,當然變成正數了。

7樓:匿名使用者

顧名思義,無bai符號是du沒有符號的,只能zhi

儲存非負數。所以顯dao示結果是不一版樣的。

在計算權機內部,負數與非負數沒有區分,只是負數用補碼形式儲存,補碼是原碼按位取反再加1得到的。對於負數來說首位一定是1,假如作為正數,將是一個很大的數,也就變成了另一個數了。

8樓:匿名使用者

無符號整型和無符號短整型所佔的位元組數是不一樣的

9樓:匿名使用者

你把它寫成2進位制就知道了!

c語言,為什麼%o和%x輸出的都是無符號數,為什呢不能有負數

10樓:匿名使用者

不是說不能有負數,如果使用%x和%o輸出時,應該先把你的資料轉為二進位制的形式,然後再轉為8進位制或者是16進位制,這樣轉出來的數是不會帶+-號的,而是根據實際在記憶體中存放的資料來顯示

c語言中用unsigned表示負數

11樓:

剛才在tc2.0裡測試了這個程式,發現的確如樓主所說,看來是tc的問題,它在列印的時候似乎沒有理會c的型別。而在gcc下結果是c=65523

所以是什麼型別無所謂,只是溢位以及printf解析時有區別。65523按負數解析實際就是 -13

///一下引自csdn

數值在記憶體中儲存時只是一串二進位制數字,沒有正與負之分的,所謂的正與負是看如何去解釋這個二進位制串,你在輸出的時候按照%d的方式輸出,就是告訴printf函式,輸出這個數字的時候解釋成int型別,你定義的變數的型別是給編譯器看的,而變數本身只是一個四個位元組的記憶體空間,你想讓它後來解釋成什麼型別就解釋成什麼型別。你可以將c程式編譯成a**程式看看,就知道,int i;和unsigned int i;之間的差別了

12樓:匿名使用者

我很想知道你的n是**來的。。。

vc下編譯如下程式,

#include "stdafx.h"

#include

void main()

結果c = 65523

13樓:匿名使用者

printf("c=%d\n",n);//n沒有定義,應該是輸入時手誤吧

如果是printf("c=%d\n",c);的話,輸出是c=65523

14樓:匿名使用者

你的輸出應該是%u,而不是%d

c語言中無符號字元型,這個無符號(unsigned)到底什麼意思啊

15樓:津人依夢聊理財

c語言中無符號字元型其實就是是長度為1個位元組的整數,從本質上說也是整數型別,通常用來存放ascii碼。

整型分為無符號(unsigned)和有符號(signed)兩種型別,預設整型變數是有符號的型別,char有點特別。需宣告無符號型別就要在型別前加上unsigned。

無符號整型和有符號整型的區別在於無符號型別可以存放的正數範圍比有符號整型中的範圍大一倍,因為有符號型別將最高位儲存符號,而無符號型別全都儲存數字。

在16位系統中一個int能儲存資料的範圍是-32768~32767,unsigned能儲存的資料範圍是0~65535。

擴充套件資料

整型分類:

基本型型別說明符為int,在記憶體中佔4個位元組(不同系統可能有差異,此處原為2,經查證windows系統下為4,vax系統也如此) ,其取值為基本整常數。

短整型型別說明符為short int或short'c110f1。所佔位元組和取值範圍會因不同的編譯系統而有差異。對於16字機,short int 佔2個位元組,在大多數的32位機中,short int 佔4個位元組。

但總的來說,short int 至少16位,也就是2個位元組。

長整型型別說明符為long int或long ,在記憶體中佔4個位元組,其取值為長整常數。在任何的編譯系統中,長整型都是佔4個位元組。在一般情況下,其所佔的位元組數和取值範圍與基本型相同。

無符號型

型別說明符為unsigned。在編譯系統中,系統會區分有符號數和無符號數,區分的根據是如何解釋位元組中的最高位,如果最高位被解釋為資料位,則整型資料則表示為無符號數。

第2章 c++簡單程式設計  2.2 基本資料型和表示式

16樓:匿名使用者

無符號整數,計算機裡的數是用二進位制表示的,最左邊的這一位用來表示這個數是正數還是負數,這樣的話這個數就是有符號整數。

如果最左邊這一位不用來表示正負,而是和後面的連在一起表示整數,那麼就不能區分這個數是正還是負,就只能是正數,這就是無符號整數。

擴充套件資料

有符號和無符號的差別

int是有符號的,unsigned是無符號的。

它們所佔的位元組數其實是一樣的,但是有符號的需要安排一個位置來表達我這個數值的符號,因此說它能表示的絕對值就要比無符號的少一半。

舉個例子:有一個1個1位元組的整數,那麼無符號的就是:「00000000~11111111 」這個就是無符號的範圍。

一個位元組是8位, 有符號的數,因為第一個位要用來表示符號,那麼就只剩下7個位置可以用來表示數了0000000~1111111。

因為有符號,所以還可以表示範圍:-1111 111~+1111 111。

17樓:

一個字元型,佔8位 ,例如 ******xx 最高位沒有符號之別,也就是最高位不是符號位 ,最大的值也就是8個1 為255 。

18樓:匿名使用者

字元型就是8位長整數,若是無符號字元型,就只能表示0~255之間的正整數。有符號的整型,能表示-128~127之間的正整數和負整數。ascii字元可以用一個字元型表示

19樓:匿名使用者

如果你要設定的變數不是負數的時候才會用,如char的值在-128~127之間,

unsigned char的值在0~255之間

20樓:匿名使用者

在c語言中,

baichar本質就是du一個數字

,而且並zhi沒有規定那個數dao字代表哪個字元,只是內一般都容是使用ascll編碼,所以 65表示『a』,如果拋開ascll編碼,unsigned char和unsigned int的表示的形式是一致的,char和int只是在分配空間和解析內容的時候才用得上。

21樓:匿名使用者

字元型變數是1個8位二進位制,無符號字元型就是0~255,有符號是-128~127

22樓:苦孩子

就是沒有符號唄,也就是說沒正負之分。。。。。

例如:int 型別 可以取正負值

但如果你定義了 unsigned int 則只能取正值 不能取負值否則編譯時就會報錯!

23樓:金色潛鳥

c語言中 一個儲存單元 按二進位制數位 可以分 符號位 和 資料位,資料位 也許分專 指數位屬,尾數位,到底一個儲存單元,有多少位,有哪些位,取決於 變數型別宣告。

unsigned char 型別宣告 說,長度 是 1個位元組,(也就是 8 位 二進位制數位),無符號位,8 位都是數值位。

所以 unsigned char 數值範圍 是 0000 0000 到 1111 1111, 寫成 10 進位制 是 0 到 255。

無符號字元型 實際上 是 1個位元組 無符號整型。可以用來描述 ascii 字元 編碼 0 到 255。

24樓:匿名使用者

字元型是8位整數copy,若是無符號字元型,就只能表示0~255之間的正整數。

有符號的字元型,能表示-128~127之間的正整數和負整數。

所謂字元型簡單點說就是8位整數

以前用字元型來表示ascii字元

無符號的則擴充套件到了255,可以用來表示擴充套件ascii

c語言中unsigned int能顯示負數嗎?

25樓:匿名使用者

無符號數和bai

有符號數 在儲存上du並沒有區別 在使用的時候zhi 如果符號不匹配dao c會做自動轉換

比如內 你定義了無符號的a然後容賦值一個負數 -1 就等同於a = (unsigned int)-1;

得到的a值實際上是0xffffffff (取決於編譯器,32位編譯器為這個值)

如果用%u輸出 那麼就會輸出這個數字對應的10進位制值 為2^32-1但是你用%d輸出 就等於

printf("%d", (int)a);

於是又被轉回了-1

應不應該分手,應不應該果斷分手?

你說他反而把你改變了。這種情況是很正常的事情,因為你愛他,你就會為他改變。其實兩個人在一起就是一個相互包容,相互理解,相互相互相互改變的過程。有的女孩子因為小時候生活環境,和父母的教養。讓他們養成了一些不好的習慣。這是很有可能的。但是我覺得你只要愛她。你就能改變他,你就能觸動他。一般來說,分手後為了...

人生應不應該追求意義,人生不應該追求意義?

我認為人生應該追求意義,因為意義是你留給後人的一種榜樣,所以我認為人生應該追求意義。你好,當然應該。如果幹什麼都問都不問,不講究個為什麼和意義,跟機器人和行屍走肉傀儡有什麼區別呢?人之所以為人,除了智商比動物高,就是有思想上的崇高,還有感情等等。人這一輩子很漫長,有時候也很短暫!如果想讓你的人生變得...

是不是不應該看別人臉色。不應該活著

別人的臉色給了 眼睛確是長在你的臉上 那麼多種活法 選擇權是在你的手上 內 晴天的時候總是睡 容覺就別抱怨下雨 每次覺得疲憊了就去花店走一走 做不好的工作換一份試試 換了五份還是做不好就問問別人怎麼做的 也可以問問父母 他們希望你開心滿足而不是強顏歡笑 當然如果你真的覺得生命無望xn也沒辦法攔住你,...