char c = 1 char c = "1" char c = '1'

本文详细探讨了C语言中char类型的定义与使用,包括编译器实现方式、signed与unsigned的区别,以及在不同上下文中char作为字符和整数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.char的定义
C标准中对char是 Impementation Defined,就是未明确定义
(1)那它由什么定义?坦白说,具体的编译器明确定义,一般都是用signed char或unsigned char来实现char的,也就是说不同的编译器对char是什么定义不一样
(2)为什么要这样定义?因为这三种类型的对象在存储介质中的表现形式是一样的(都是一个占8bit的01串,只是解析的时候不同)
(3)到底是signed char还是unsigned char?这得看编译器:VC编译器、x86上的GCC都把char定义为signed char,而arm - linux - gcc却把char定义为 unsigned char
2.char的使用
char的不同使用给了它不同的字面上的含义
(1)当字符用
原始的ASCII标准里,定义的字符码值是只有0~127,所以怎么定义的char都刚好好装得下,于是普通意义上我们对它的理解就是它表示一个字符,也就是让表示一个ASCII码(这也是C语言基础中对它的解释)
(2)当单字节整数
从本质上来说,字符('a', 'b', 'c'等)本质上也是一个整数,只是字符代表的值是0~127,我们可以用char表示一个不太大的整数

char c = -1;
	printf("%d\n", c);
输出结果为-1

char c = 1 表示ASCII码=1的字符

char c = "1" 语法错误

char c = '1' 表示1这个字符

#include<stdio.h>
int main()
{
    char a=1,b='1';
    printf("%c  %c\n",a,b);// 输出ASCII为1的字符和字符'1' 
    return 0;
}
1

ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符无法显示(这是以现今操作系统为依归,但在DOS模式下可显示出一些诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符,控制字符的用途主要是用来操控已经处理过的文字,在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。

2



C/C++高位扩展:

高位扩展既是从低位数数据(比如int)转换到高位数数据(long long)时发生的。高位数数据的低位就是原来的低位数数据,那么高位呢?
原来以为高位统统补0就好了,但是实际上不是这样的。如果低位数数据是有符号数,会按照低位数数据的最高位拓展,比如32位 - 1(0xFFFFFFFF)会扩展为64位0xFFFFFFFFFFFFFFFF。而如果低位数数据是无符号数,那么直接补0。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值