9.2 C

本文详细介绍了C语言中不同数据类型(如unsigned、int、long、char、浮点型)的使用、内存理解、以及printf中的格式化打印。特别关注了整数类型间的隐式转换及其影响,以及字符类型的存储特性。

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

1.打印:

unsigned int 用%u,unsigned long 用%lu

单独的unsigned相当于unsigned int

long 用%ld   //根据计算机系统的不同可能不同,在int与long位数相同的系统中long可以用int,但这样的程序不具有可移植性(若在不同位数的系统)

%lo,%lx分别表示以八进制,十六进制打印long(即以l为前缀)

c语言的转化说明中只能用小写

short用h前缀,即为%hd,%ho,%hx

long long用%llu,%lld分别表示无符号和有符号

2.对内存的更好理解:

一.int类型被认为是计算机处理整数类型时最高效的类型

二.在函数传递参数时,编译器会把其他整形转化为int

三.用%hd等前缀可以避免这种转化

四.对于较大的数因此出现截断的现象

如: short end=65537;

printf("%d and not %hd",end,end);

输出得到200 and not 1

原因:

%d中转化为32位储存:00000000000000010000000000000001

而%hd只会读取后面的16位(int为32位,short为16位的系统中)

3.char类型

一.char用于储存字符(如字母和标点符号)

二.从技术层面,char类型是整数类型,储存方式为整数(ASCII)

三.正因为ASCII的范围为0~127,需要7位的二进制,因此char被定义为8位

四.可以用ASCII中的数字代替,例:char a='A',char b=65;一样

五.

char grace='B';

B对应的ASCII值66本会储存在32位的储存单元中,而现在储存在8位储存单元中(所以会有%d和%c的两种打印结果)

依据此特性:

int main()
{
    char a = 'FSTE';
    printf("%c", a);
    return 0;
}

输出得到E,解释:定义的字符常量'FSTE',即把4个独立的ASCII码储存在32位储存单元中,而赋值给char类型的a,只能接收后8位,即E

//个人疑问:另外,若char a='FSTEA'会报错"字符串过长",因此char类型的储存会被编译器存为32位

4.活跃位置即光标位置

5.浮点型

一.用%f来打印十进制的浮点数,用%e打印指数类型的浮点数

二.c编译器会把float类型自动转化为double类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值