按字元存儲
『壹』 最近在學c語言,有一個問題,c語言字元的存儲是按照ascii碼存的,那麼我們現在用的軟體是不是所有
ASCII字元集只有256個字元,全世界那麼多語言、那麼多文字,256個字元肯定是不夠的。現在主要使用的字元集是UNICODE字元集,這個字元集可以編碼65535個字元。
C語言里定義了兩種字元類型:char(一般是一個位元組)和wchar_t(一般是兩個位元組),第一個可以用來保存ASCII字元,第二個主要用於保存UNICODE字元。
『貳』 字元型數據 按11111111儲存,對應的ASCII值應該是多少怎麼運行後是y上2點。。它的ASCII值是多少
ASCII是美國國家標准規定的7位字元內碼存儲標准,轉化為整數的范圍為0~127,二進制11111111沒有對應的ASCII。
如果問11111111對應的整數表示是多少,那麼可以有答案。ANSI兼容內碼方案擴展的ASCII中,第8位為1的字元不是ASCII字元,而它們的整數值取決於char是否有符號(包括char在在內的單位元組有符號整數類型,第8位為符號位)。雖然char、signed char、unsigned char是三種不同的類型,但其中char和另外某一種類型的算術運算行為一致。有些平台上char類似於signed char(11111111轉化為整數,為十進制-1),有些平台上char類似於unsigned char(11111111轉化為整數,為十進制255)。因此除非明確給出運行的平台,這個問題沒有定論的。
另外有一點,標准庫讀入char字元的一些函數,為了容納可能超出char范圍的文件結束符EOF(stdio.h定義的宏,等於-1),返回值是int。EOF轉存至char對象中,一般發生截斷,保留低8位的11111111。從11111111的這個一般來源角度來說,表示EOF,也就是整數-1。
----
y上兩個點(ÿ)確實是ASCII的擴展單字元集ISO 8859-1(Latin-1)裡面11111111對應的符號。LZ的程序輸出了這個字元,比較有可能的原因就是我上面說的,把EOF用char存儲然後輸出了。
「由於128~255對應字元 是基於不同平台會有區別,所以我才在我的ASCII碼表裡找不到對應字元對嗎?」
↑的確這和平台相關。准確地說,是和字元集相關,而不同的平台可能默認輸出時可能會使用不同的字元集。這並非是ASCII碼表中找不到對應字元的原因,因為二進制11111111本來就不是ASCII字元集中的成員。另外,ASCII及其兼容字元集的0~127目前被各個平台默認輸出支持,所以不用考慮平台相關性。
====
[原創回答團]
『叄』 在c語言中,字元型數據在內存中以什麼形式存放
c的char數據屬於基本類型,基本類型其中還包括-整型,實型,枚舉類型!
數據在內存中是以二進制形式存放的。數值是以補碼表示的。
整型:
一個正數的補碼和其原碼的形式相同。而負數的補碼方式是將其絕對值的二進制形式「按位求反再加1」
實型:
在內存中佔4個位元組,是按照指數形式存儲的,實型數據分為小數部分和指數部分,分別存放!計算機用二進製表示小數部分,用2的冪次來表示指數部分!
『肆』 十進制數257按字元形式存儲時,機器中表示為多少
正確答案為A
因為字元'2'的ASCII碼為50,十六進制為32H,同理,字元'5'的十六進制為35H,字元'7'的十六進制為37H
『伍』 c語言中字元型數據在內存中儲存的是什麼
它的ASCII碼值,它是一個位元組,所有數據類型在內存中都是以0和1代碼二進制儲存的,這個原則不會變
『陸』 什麼是字元串 字元串的存儲是怎樣的
字元串是一對雙撇號括起來的字元序列,字元串的存儲給你舉一個例子就知道了:
字元串常量「」,占內存單元是六個,而不是五個,因為C規定,以字元「\0」作為字元串結束標志,但在輸出是不輸出「\0」.
就解釋這么多,希望對你有所幫助。
『柒』 c語言中怎麼將字元串按字元存到數組中
直接
char s[20];
scanf("%s",s);
就可以啦!
在C語言中,字元串本來就是以數組的形式存儲的。
『捌』 字元串在小位元組序計算機中是按什麼順序存儲的
也依然是按照位元組順序存儲的,例如字元串「abc」在內存中的連續四個位元組分別是0x61、0x62、0x63、0x00。
『玖』 C語言 字元串的存儲
仔細看看,會有的,只不過這種情況應該在靜態數據區(CS段), 當然,編譯器生成的代碼和人寫的肯定不一樣
『拾』 輸入字元串的動態存儲
這個不太會,研究一下可能會有高手告訴你的,自己的問題會比任何人都清楚,做到現在的地步,你離成功就差一點點了,所有自己研究研究可能就找到問題的原因了,結果可能更令你滿意,我也是剛在網上找問題答案的,有類似的可以借鑒,沒有的話咱就自己好好想想吧,加油!我們都可以做到很好!呵呵