前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将char转换成int_c语言中int转char

将char转换成int_c语言中int转char

作者头像
全栈程序员站长
发布2022-11-10 13:11:08
1.4K0
发布2022-11-10 13:11:08
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

网络上现在能搜到的其他答案都是针对于类似

char a = ‘2’;

int b = a-‘0’;

//value of b is 2

这样的问题。

那么如果问题是

char a = -2;

int b = a;

//value of b is ?

这样的问题呢?

一般平时写代码的同学都会确定b的值是-2,但实际上b的值和编译器有关,如果直接当做-2用,很有可能让你的程序出现莫名其妙的错误。

因为在一些编译器下会进行符号位扩展,直接保留符号,将a看作signed char, b的值会是-2,

但是在一些编译器下,直接屏蔽了符号位扩展,将a先转换成unsigned char,然后再转换成int,得到的b值为254。

这时候如果我们还想拿到值为-2的int型变量,而且要保证在不同的编译环境下都可以得到值相同的变量,要怎么办呢?

一个很简单的解决方案就是在类型装换后手动加入判断

char a = -2;

int b = a;

if(b > 127)

b -= 256;

经过这样处理,0~127 的范围内,char 和 int 是通用的,-1~-128 在转换成int时如果被去掉了符号位扩展,可以通过减去256来还原成有符号数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188983.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月27日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档