返回什么 0xfe + ceil(x) 返回
What does return 0xfe + ceil(x) return?
据我了解,C 应该将0xfe转换为 -2,因此返回应该是 ceil(x) - 2 - 但该函数似乎没有返回这些。int m(double x){return 0xfe + ceil(x)}
应该返回什么?
对这个新手问题表示歉意。我一般不是C程序员。 只是学习十六进制和 C。
在 C 语言中,0xfe
是十六进制int
文字。 具体来说,它等于 254
,因此结果是双精度值 ceil(x) + 254.0
。
如果显式转换为 int8_t
或其他 8 位签名类型,如下所示:
(int8_t)0xfe
然后你可能会得到值 -2,但这不能由标准保证。 这是因为 0xfe
的值为 254,在有符号的 8 位字段中不可表示,因此标准第 6.3.1.3 节中的最后一条规则适用:
否则,新类型是有符号的,并且无法在其中表示值;结果要么是实现定义的,要么是实现定义的信号。
如果要-2
值,请写-2
。
0xfe
不是-2
,而是254
。
如果你想要-2
,请使用"-2
"(如果你真的想使用十六进制,请使用"-0x02
")。
在 C 中,0xfe
从不表示 -2。另一方面,-2 有时可能表示0xfe(如果隐式或显式转换为 unsigned char
)。
就像其他答案所说的那样,如果你想要-2,你应该使用-2。
0xfe有时可能表示 -2 是正确的,但这完全取决于存储值的数据类型。如果你只写0xfe它将被解释为一个整数,意思是254。如果将其存储在有符号字符(一个字节,8 位,范围为 -128 到 127)中,则应将其解释为 -2。在C/C ++中,这种数据类型称为char,我认为C#称为字节,但我不确定。
相关文章:
- 查找不存在的键时,unordered_map返回什么
- 如果我在 const 函数上使用指针,我可以返回什么?
- 使用枚举作为条件,if 条件将返回什么,真或假?
- 我应该返回什么而不是标准::shared_ptr<>&?
- 当你只使用 return 时,函数返回什么类型;在 c++ 中
- 在C++中,运算符 sizeof 返回什么数据类型?
- ActorItr 迭代器变量中有什么,* ActorItr 返回什么?
- mxGetPr 返回什么?
- 重载运算符返回什么类型的值(对于用户定义的类型):右值还是左值?
- 代码是否有效.如果我想显示第一个元素?如果不是,那么 s.begin() 会返回什么?
- 范围分辨率运算符在类型:: var的情况下返回什么
- fork_rv返回什么
- int* foo(int a)在C 中返回什么
- 当找不到请求的注册表值时,ReggetValue会返回什么
- 我们应该在带有 char *func(char *string) 的函数中返回什么?需要简要说明这与 c 中的 char
- 重载的 QAbstractItemModel::flags 应该为无效的 QModelIndex 返回什么
- 试图在每次输出后使用一个函数摆脱'0',但不确定我可以返回什么
- 查找函数在失败结果中应该返回什么
- 当c 中的矢量容器过载[]运算符时,我对未定义的索引返回什么
- 新运营商在组装中返回什么