java 初始化char数组_如何使用十六进制数初始化char数组?

虽然在你的代码中加入大量的强制转换可能会很乏味,但实际上我觉得使用尽可能强大的键入效果非常好 .

如上所述,当您指定类型“char”时,您正在邀请编译器选择编译器编写者首选的任何内容(有符号或无符号) . 我不是UTF-8的专家,但如果你不需要,我没有理由让你的代码不可移植 .

至于你的常量,我使用的编译器默认常量写入签名的int,以及考虑上下文并相应地解释它们的编译器 . 请注意,有符号和无符号之间的转换可能会溢出EITHER WAY . 对于相同数量的位,负数溢出无符号(显然)和无符号,顶部位设置溢出有符号,因为最高位表示负数 .

在这种情况下,您的编译器将您的常量视为无符号8位 - 或更大 - 这意味着它们不适合作为带符号的8位 . 我们都很感激编译器抱怨(至少我是) .

我的观点是,铸造没有什么不好表明你打算发生什么 . 如果编译器允许您在有符号和无符号之间进行分配,则应该要求您在不考虑变量或常量的情况下进行转换 . 例如

const int8_t a =(int8_t)0xFF; //将是-1

虽然在我的例子中,分配-1会更好 . 当你不得不添加额外的强制转换时,它们要么有意义,要么你应该对你的常量进行编码,以便它们对你所分配的类型有意义 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值