‘壹’ 最近在学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段), 当然,编译器生成的代码和人写的肯定不一样
‘拾’ 输入字符串的动态存储
这个不太会,研究一下可能会有高手告诉你的,自己的问题会比任何人都清楚,做到现在的地步,你离成功就差一点点了,所有自己研究研究可能就找到问题的原因了,结果可能更令你满意,我也是刚在网上找问题答案的,有类似的可以借鉴,没有的话咱就自己好好想想吧,加油!我们都可以做到很好!呵呵