C语言(十七)数据类型转换的特殊情形(本三条规律由本人总结编写,如有错误欢迎指出)

数据类型转换的特殊情形

1、程序:

#include<stdio.h>
void main()
{
/*第一种情形,数据溢出*/
unsigned short a = 256;
char b = a;
printf("%d",b);//输出结果为0,因为b只是取得了a值的低8位	
/*第二种情形,当把占字节较小的数据赋值给占字节较大的数据时,当字节较小数的符号位为0时,转换时新扩充的位被填充成0*/
char c =10;
unsigned short d = c;
printf("\n%p", &d);//变量h输出地址
printf("\n%u",d);//变量d输出的值是10
/*第三种情形,当把占字节较小的数据赋值给占字节较大的数据时,当字节小数的符号位为1时,转换时新扩充的位被填充成1*/
char e = 255;      //二进制数为1111 1111
short f =e;        //变量f的二进制数为1111 1111 1111 1111
printf("\n%p",&f);//变量f输出地址
printf("\n%d",f);//变量f输出的值是-1

char g =128;      //二进制数为1000 0000
short h = g;      //变量h的二进制数为1111 1111 1000 0000
printf("\n%p", &h);//变量h输出地址
printf("\n%d", h);//变量h输出的值是-128

char i = 10;      //二进制数为0000 1010
short j = i;      //变量j的二进制数为0000 0000 0000  1010
printf("\n%p", &j);//变量j输出地址
printf("\n%d",j);//变量j输出的值是10
getchar();


}

2、运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值