2020/5/12 学习笔记

1.整数的范围:

类型范围
char1字节:-128~127
short2字节:-32768~32767
int取决于编译器(CPU),通常的意义是“1个字”
long4字节:-2147483648~2147483647
long long8字节:-9223372036854775808 ~ 9223372036854775807

2.unsigned
如果一个字面量常数想要表达自己是unsigned,可以在后面加u或U。如255U
用l或L表示long(long)
unsigned的初衷并非扩展数能表达的范围,而是为了做纯二进制运算,主要是为了移位。
例如:

#include "stdio.h" 
#define b 'A' 
#define b2 65    //两种使用define定义字符型常量的方法。 
int main()
{
	unsigned const char a=255; //unsigned类型常数,类型为char,起到的作用是
	                           //限制常量长度为一个字节。 
	const char a2=255;//普通常量,类型也是char,在内存中占一个字节。 
	char d=255;//char类型变量,给它赋值为255 
	int i=a;//使用常量a给int变量i赋值 
	printf("a=%d\n",a);//将a的数据转换为整型输出 
	printf("a2=%d\n",a2);//将a2的数据转换为整型输出 
	printf("i=%d\n",i);//输出i的值 
	printf("b=%c\n",b);//将b的数据以字符型输出 
	printf("b2=%c\n",b2);//将b2的数据以字符型输出 
	printf("d=%c\n",d);//将d的数据以字符型输出 
	d=25;
	printf("d=%c",d);//将d的值变为25后以字符型输出 
	return 0;
}

输出结果为:
在这里插入图片描述
可见在常数中,加unsigned和不加会影响其转换为整数输出时的结果,而若以字符形式输出,则其内存内的二进制数必须满足其值在ASII码区间内,否则无意义。
不,也不能说毫无意义,对于ASII码来说,标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符 。
其中:0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响 。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。
在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0–127表示的符号是一样的,不一样的只是128–255的这一段 。
至于在本机的127之后的ASII码,以字符形式输出,经试验只有128有特殊字符,其他不是“"?”就是输出为空(或者实际上有其他东西但根本不现实,只占据了大概两个空格的空间)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值