c语言整型转换时截断危险,网易云课堂_艾叔:零基础一站式C语言|C程序设计精讲_章节5整型_课时41整型转换、扩展与截断(示例代码)...

扩展:

char src;

int dst;

dst = (char)src;

src有符号,扩展位=符号位,符号位0扩展位也是0,符号位1扩展位也是1

src无符号,扩展位=0

截断:

int src;

char dst;

dst =(char)src;

从低字节开始,截取sizeof(dst)个字节的十六进制数值

整型转换,只与十六进制数值有关系

int i = -1;

整数-1

0xFFFFFFFF十六进制数值

扩展:

int to unsigned int

#include

#include

int main()

{

int int_num = -1;

unsigned int uint_num = (unsigned int)int_num;//强制转换,显式转换

printf("%x %d\n", int_num, int_num);

printf("%x %u\n", uint_num, uint_num);

system("pause");

return 0;

}

ffffffff -1

ffffffff 4294967295

请按任意键继续. . .

char to int

char to unsigned int

#include

#include

int main()

{

char char_num = -1;

int int_num = (int)char_num;

unsigned int uint_num = (unsigned int)char_num;

printf("%hhx %hhd\n", char_num, char_num);

printf("%x %d\n", int_num, int_num);

printf("%x %u\n", uint_num, uint_num);

system("pause");

return 0;

}

ff -1

ffffffff -1

ffffffff 4294967295

请按任意键继续. . .

char to int

char to unsigned int

#include

#include

int main()

{

char char_num = 1;

int int_num = (int)char_num;

unsigned int uint_num = (unsigned int)char_num;

printf("%hhx %hhd\n", char_num, char_num);

printf("%x %d\n", int_num, int_num);

printf("%x %u\n", uint_num, uint_num);

system("pause");

return 0;

}

1 1

1 1

1 1

请按任意键继续. . .

unsigned char to int

unsigned char to unsigned int

#include

#include

int main()

{

unsigned char char_num = 0xFF;

int int_num = (int)char_num;

unsigned int uint_num = (unsigned int)char_num;

printf("%hhx %hhd\n", char_num, char_num);

printf("%x %d\n", int_num, int_num);

printf("%x %u\n", uint_num, uint_num);

system("pause");

return 0;

}

ff -1

ff 255

ff 255

请按任意键继续. . .

截断:

#include

#include

int main()

{

int int_num = -0x12345678;

short short_num = (short)int_num;

unsigned short unshort_num = (unsigned short)int_num;

printf("int %x %d\n", int_num, int_num);

printf("short %hx %hd\n", short_num, short_num);

printf("unshort %hx %hu\n", unshort_num, unshort_num);

system("pause");

return 0;

}

int edcba988 -305419896

short a988 -22136

unshort a988 43400

请按任意键继续. . .

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值