当前位置: 首页 > 知识库问答 >
问题:

为什么g在给定情况下明确定义时说不成形缩小?

侯焱
2023-03-14

考虑以下代码:

volatile unsigned int test;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
unsigned char arr[]={test&0xff};

这里无论测试有什么值,测试

警告:正在缩小“((无符号整数)测试的转换范围)

对于C 11中的任何值,缩小总是病态的吗?

有没有一种方法可以在没有显式转换的情况下保留清晰的代码,但在这种情况下不会收到警告(以及C 11模式下的错误)?


共有1个答案

饶德元
2023-03-14

我相信它会把它们放在一起,仍然得到一个32位的int。是的,这些值在技术上适合 char,但它是操作输出的类型,而不是其中的数据。请注意,测试和0xff都将是 32 位。尝试转换输出:

(unsigned char)(test & 0xff)
 类似资料:
  • Perl有一个未定义函数的概念。已声明但未定义的函数。 这个函数现在存在于符号表中,它可以用来解析方法调用。但是为什么这个“特征”会存在呢?在C语言中,这是因为函数是类型检查的,有时您希望在定义之前进行调用(例如解决循环依赖关系)。但是Perl没有这样的特性,所有的函数符号都是在运行时而不是编译时解析的。 > 如果不是原型,为什么它会存在? 为什么在方法解析中使用未定义的子程序?为什么不完全忽略它

  • 本文向大家介绍在什么情况下,用translate()而不用绝对定位?反之呢?请说明理由相关面试题,主要包含被问及在什么情况下,用translate()而不用绝对定位?反之呢?请说明理由时的应答技巧和注意事项,需要的朋友参考一下 translate设置百分比值时,百分比是相对元素自身元素尺寸的值 绝对定位的top, left等的百分比值则是相对最近的position为relative\abolute

  • 我一直在试图确定如何检测点异常给定窗口异常。 更详细地说,我知道每个30天窗口是否包含异常。例如,窗口1从2009年1月1日开始,窗口2从2009年1月2日开始,依此类推。 现在我正试图利用这些知识来确定这些异常发生的日期。如果我在2009年5月1日至2009年8月1日期间出现异常,我的窗口将从2009年1月8日最后一天的窗口发出窗口信号,从2009年5日开始。 我只是不明白如何使用窗口找到出现异

  • 本文向大家介绍在什么情况下选择webpack?在什么情况下选择rollup?相关面试题,主要包含被问及在什么情况下选择webpack?在什么情况下选择rollup?时的应答技巧和注意事项,需要的朋友参考一下 非要一句话区分的话 如果是用,如果是用其实界限并不是特别明显。在某些特殊情况下可以互用

  • 问题内容: 说我有一个清单。在什么情况下被称为? 我基本上理解了文档,但是我也想看到一个示例来毫无疑问地阐明其用法。 问题答案: 当Python尝试将两个对象相乘时,它首先尝试调用左侧对象的方法。如果左对象没有方法(或者该方法返回,表明它不适用于所讨论的右操作数),则Python希望知道右对象是否可以进行乘法。如果右操作数与左操作数的类型相同,Python就会知道它不能,因为如果左对象不能做到这一