C語言大神謝謝計算機裡怎麼表示負數,為什麼這樣表示?2 在char型別裡為什麼 128最小

時間 2022-05-04 05:17:14

1樓:懿心亮用

1.負數在現代計算機裡一般用補碼表示,為什麼呢?原因是:保證0的左右不矛盾

1是0001,推算出0是0000;

-1的是1111,推算出0也是0000。

如果直接用反碼(0變成1,1變成0)那麼0就會有兩個結果。

如果用第一位表示符號,後三位表示大小,那麼就有空間浪費。

2.char型別是8位,1000 0000還原為原碼:

最高位是1,表示負數,剩餘的各位取反 111 1111 再+1 得到 1000 0000, +128的原碼,整個數為-128

2樓:匿名使用者

1. c語言裡,負整數的二進位制形式最高位為 1,正整數的二進位制形式最高位為 0。這是一種補碼的表示形式,參考這裡:

2. char 型別在32位機子上占用 1 個位元組,也就是 8 位,由於最高位是符號位,所以最小的負數是 -2^7,也就是 -128。你知道如何求補碼後,就不難知道,

-126 的二進位制表示形式是 10000010,-127 的二進位制表示形式是 10000001,由於補碼沒有 正負零,所以依次類推,用 10000000 表示 128.

c語言char *p=「abcde/ofghjik/0」;   printf(「%d/n」,strlen(p)); 10

3樓:九指無名

應該是打錯了、、/o是不是/0啊。o和0還是不一樣的。。/0是結束符號,要是這樣的話,那麼五個字元就應該是abcde了。

c語言中為什麼char *a;

4樓:匿名使用者

char *a是宣告了乙個指向char型別的指標變數

;此時,a並沒有被初始化,沒有被指向任何資料;

所以此時scanf("%s", a)是錯誤的,a此時只是乙個空指標,而且你也不能向乙個指標變數中儲存非位址型別之外的資料;

這就相當於:

你要幫你朋友(char *a所指向的物件)買某乙個型別的商品;

這個商品名字叫「%s」;

但是你卻沒告訴計算機怎麼聯絡(char *a所指向的物件)

char *a = "hello world"; 並不是原始寫法,是一種簡化寫法,等同於:

char x = "hello world";

char *a;

a = x;

好處除了一句話幹了三句話的事情之外,還少用了乙個中間變數(陣列名本身就是乙個指標變數)

此外,最原始的c,如果你寫下:

char x = "hello world";

char y = "hello world";

char *a = x;

char *b = y;

此時,a、b變數本身是獨立開的,可區分的,但是他們所指向的記憶體位址卻是乙個,這是c語言的乙個特性,在編譯時,會將相同的字串合併起來建立,以此來節省空間,以c為原型的一些語言,比如obj-c也保留了這個特性;

5樓:阿波羅的同行者

char*a="abcd"; 中a指標指向的位址儲存的內容"abcd"為字串常量,是放在靜態儲存區;

char a[10]; 儲存的內容放在棧上;

用scanf 進行輸入操作時,只能修改棧中的變數值,靜態儲存區的常量值不能被修改,所以會報記憶體錯誤

6樓:帥文玉告水

char*a=

(char

*)_a;

//表示將變數_a進行強制型別轉換為char*型別比如:

char _a;

char *a = (char *)_a; // 就是將char型別的變數_a轉換為char *型別,並賦值給*a

7樓:l語言之父

不知道樓主你想問什麼,char * a是乙個名叫a的字元型指標變數,可以存放字元變數的位址,如

8樓:煙火夜空

c語言中,* 除了表示 「乘」外,還表示 「指標」的意思。

這個 char *a 就是定義 a 為 指標型別,指向 的內容 為 char 型的 資料。

9樓:楓若神明

char *a;分配了乙個指標,但是沒有給它分配存放資料的空間大小。就像酒店老

板預計要造5個房間,為101,102,103,104,105,房間號是有了,但是要把具體的房間給造出來。如果沒有造房間,空有房間號,顧客是無法住的。

char *a="hello world"; 這個就相當於本來就造好了乙個房間,現在只是把這個房間掛個號叫101。

明白了嗎?

10樓:匿名使用者

char *a只是定義了乙個指標,a並沒有指向實際的位址空間應該在scanf("%s",a);之前加一段為a分配位址空間的程式a=malloc(100);為a分配100個位元組的空間。所有最終程式應該為

char *a;

a=malloc(100);

scanf("%s",a);

11樓:

char 本來就是用來接字元的,並且是單個字元,長度只佔1個位元組。正常我們輸入是

char a;

scanf("%s",&a);

char定義時用單引號,只能有乙個字母,數字。char c='c'。

所以如果你想用char儲存字元,就得用陣列了。建議使用string……

12樓:雲帆00滄海

char *a;//宣告a是char *型別,但沒有分配儲存空間,要使用就要用malloc分配動態記憶體

char *a = 「hello world」;//存放在唯讀資料段中

char a[10];//分配10個char的空間,

13樓:上官蕭敬

char *a是指a的位址,不是a的值。

c語言中*p代表指標。

位址是不可以直接賦值的。

14樓:天降轅石

char *a,是乙個指向char型別的指標,裡邊只能存放指向char型別的指標,

"%s",是指向字串的。最關鍵的你沒有初始化,這是個野指標,沒有指定是很危險的啊。

15樓:さくらんぼ櫻桃

這樣很容易崩潰,a沒初始化

計算機c語言,為什麼?(1)

16樓:

選a解:6,5不解釋了。65,66輸入時的格式是「%d",而輸出時是「%c",注意沒,所以65,66要轉換為ascall碼,分別是a,b。

17樓:匿名使用者

選a,由輸出格式決定

18樓:豽韷

a 因為 a,b 型別是char 而 c,d 是int

所以 a,b 輸出就是6,5

c,d 本來是整數型的 但是要輸出字元型

就轉化為ascill碼 65 代表a ,66 代表 b所以答案就是a

19樓:潮派遊戲人

a因為a,b,c,d都是char型,第三行scanf輸入a,b為字元型,所以就是輸出6和5,當輸入c,d的時候為數字型,經過char強制轉換後,把數字轉換為了字元a和b,轉換可以從ascii碼表查詢,希望你看的懂,我說不好!

20樓:

此題選a

你輸出的時候,第乙個輸出格式應該是%c而不是c(應該是你粗心了)a和b的輸出我就不解釋了,很明顯。

我們看看c和d,輸入的時候是給c和d輸入十進位制數65和66,而你在輸出的時候是選擇%c(字元型)輸出,所以它就把ascii碼中對應65和66的字元輸出,即a和b。

21樓:匿名使用者

b 你輸入都是字元形式不會再轉的

22樓:匿名使用者

a根據printf的輸出格式

23樓:匿名使用者

選a1.66↙是輸入66後加回車。

2.前面是scanf用%d輸入的,意思是整數輸入。而printf後面是用%c輸出,使用字元輸出,而65,66是a,b的ascill碼

一道c語言題,不知這樣寫錯在**。求大神在我寫的這段**的基礎上作變動不大的改正!謝謝! 20

24樓:匿名使用者

void main()

改成void main()

是這個意思麼?

25樓:匿名使用者

if(time)

if的條件沒寫好,這個time並不是bool引數

sizeof(char)等於1,那sizeof(『a』)為什麼等於2?

26樓:匿名使用者

編譯器不同,結果會有所不同。

如果是vc、vs編譯器,結果為1,表示字元中的位元組數。

如果結果是2,那麼只有乙個解釋,『a』是整型常量,是unsigned int,且樓主的編譯器中int的寬度為16位2位元組,所以是2。

擴充套件資料

一、定義不同

sizeof是運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列、指標、型別、物件、函式等。

2、它的功能是:獲得保證能容納實現所建立的最大物件的位元組大小。具體而言,當引數分別如下時,sizeof返回的值表示的含義如下:

陣列——編譯時分配的陣列空間大小;指標——儲存該指標所用的空間大小(儲存該指標的位址的長度,是長整型,應該為4)。

二、語法不同

1、strlen是函式,要在執行時才能計算。引數必須是字元型指標。當陣列名作為引數傳入時,實際上陣列就退化成指標了。

2、它的功能是:返回字串的長度。該字串可能是自己定義的,也可能是記憶體中隨機的,該函式實際完成的功能是從代表該字串的第乙個位址開始遍歷,直到遇到結束符null。

返回的長度大小不包括null。

27樓:夢色十年

編譯器不同,結果會不一樣。

如果是vc、vs編譯器,結果為1,表示乙個字元的位元組數

如果結果是2,那只有一種解釋,『a』是整型常量,是unsigned int,且樓主的編譯器中int的寬度為16位2位元組,所以是2。

28樓:滄海雄風

1 1press any key to continue環境vc6

#include

void main()

29樓:匿名使用者

a=97,是整形數字,所以是2

計算機二級c語言評分標準,計算機二級c語言上機考試怎麼評分?

1 選擇題 40題,每題1分。按標答給分 2 程式填空 3處空,每空6分。共18分,按標答給分,如果和標答的寫法不一樣,就算對的也沒有分。每一空有每一空的分數。做對一空就給6分 3 程式改錯 2處錯誤,每處9分,共18分。都是 found 下面的一行有錯誤,按標答給分,如果和標答的寫法不一樣,就算對...

求計算機二級C語言複習,求計算機二級C語言複習資料。

剛剛查到過了全國二級c,我參加的是無紙化考試,裸考的。就說說考什麼吧,其實並不難,只要你把c語言基礎學好了,大題就沒問題了。還有一部分選擇題也是考c基礎的。然後就是一些相關的東西了,我發現這些東西還不少呢。主要有軟體工程的一些簡單概念,資料結構的一些簡單概念,資料庫的一些概念等等之類的。比如說告訴你...

計算機c語言,有幾個問題,望解答,準備計算機二級的菜鳥在此謝過

問題一 c語言必須只有乙個main函式,因為main函式是c語言的主函式,無論main函式在 都是先執行main函式的,同時,c語言又是一種結構化語言,結構化的表現就是模組化,模組化就是函式,意思就是說,同乙個程式有且只有乙個主函式,但是你可以定義其他的函式,比如,你要實現兩個數中輸出最大值,你可以...

求 計算機二級c語言的複習,求 計算機二級C語言的複習資料

做書後習題 就ok了 然後記著 棧是先進後出 佇列是先進先出 樹的基本概念和計算方法 給我也發乙份吧 2401706331 qq.com 給我也發乙份好不好,謝謝了15084853 qq.com 兄弟也給我發乙份吧 505135596 qq.com 謝謝兄弟了 求計算機二級c語言的複習資料 要最新全...

計算機二級c語言程式設計如何過,問下計算機二級C語言如何考高分?

看書,在圖書館找一本近年的c語言二級題,做題。一直做。刷題。有二級題庫,你考試的題目全部是從那裡出的 這個還是要靠平時多練習吧。現在這些模擬考試都有一些相關的模擬練習可以先練習。你去弄個題庫練一練,也不會特別難的。inux檢視使用者所屬組有很多方法 命令groups 檢視當前使用者所屬組 root ...