问题标签 [signedness]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
99 浏览

c - C 比较 'x < 0' 其中 'x' 的类型是任意的,即可能是无符号的

给定:

定义为的类型TheValueT可以任意配置,例如uint8_tint64_。让有一些代码:

问题:

碰巧如果TheValueT定义为无符号类型,编译器会抱怨“由于类型范围有限,条件始终为真......”。

问题:

如何在让TheValueT仍然是任意整数类型的同时避免编译器警告?该解决方案应适用于最广泛的 C 编译器。

0 投票
2 回答
274 浏览

rust - 如何在 Rust 代码中表示 C 的“无符号负”值?

我使用winapi crateResumeThread从 Rust 调用 WinAPI 函数。

文档说:

如果函数成功,则返回值是线程之前的挂起计数。

如果函数失败,则返回值为 (DWORD) -1。

如何有效检查是否有错误?

在 C 中:

在锈中:

我理解错误;但是在语义上与 C 代码相同的最佳方式是什么?检查反对std::u32::MAX

0 投票
4 回答
174 浏览

c++ - C ++中相互转换不同签名类型的最佳方法?

通信对等方发送了一个 uint64_t 数据字段,它带有我需要存储到不支持无符号整数类型的 Postgresql-11 数据库中的订单 ID。虽然实际数据可能超过 2^63,但我认为INT8Postgresql11 中的一个文件可以容纳它,如果我仔细进行一些转换。

假设有:

我计划使用以下方法之一将 uint64_t 值转换为 int64_t 值:

  1. to_db = order_id; // 直接赋值;
  2. to_db = (int64_t)order_id; //c 风格的强制转换;
  3. to_db = static_cast<int64_t>(order_id);
  4. to_db = *reinterpret_cast<const int64_t*>( &order_id );

当我需要从数据库加载它时,我可以进行反向转换。

我知道它们都可以工作,我只是对哪个最符合 C++ 标准感兴趣。

换句话说,哪种方法在任何编译器的任何 64 位平台上始终有效?

谢谢!!!

0 投票
1 回答
93 浏览

c++ - c++ 在表达式中查找隐式类型转换

对于以下表达式:-

我们得到以下输出:-

似乎 ui+fval 是一个浮点数。

但是,鉴于 float 和 unsigned int 都是 4 个字节,并且并非所有 unsigned int 值都可以放入 float,所以 fval 不应该转换为 unsigned int 吗?

0 投票
1 回答
50 浏览

c - 警告:传递“Proc_Start”参数 3 的指针目标在符号上不同

我的 stm32 目标的 C 代码有问题。

我收到此错误:

警告:传递“Proc_Start”参数 3 的指针目标在符号上不同

我真的不知道为什么,我在网上搜索了类似的主题,但主题中提出的解决方案都没有帮助我。

我为您提供了问题所在的代码以及注册错误的宏的定义

编译产生错误的地方

宏的定义

用宏调用的函数

非常感谢您未来的帮助

编辑 :

我已经尝试过,但是添加第三个参数并没有给出警告,而是一个错误,说宏只需要 2 个参数

宏“mProcStartParam”传递了 3 个参数,但只需要 2 个

该代码通过稍微修改 AppGestRelay_Init() 函数来工作,但仍然有警告,我想知道它来自哪里

谢谢 :)

解决 :

通过在 mProcStartParam 的定义中的 #fonct 前面添加 (const s8*) 警告消失,就像在 mProcStart 的定义中一样

谢谢