c++ - 将正符号变量替换为无符号变量

标签 c++ c variables

(在 C/C++ 中)

//1
int i = 1;
unsigned u = i;

//2
int i = 1;
unsigned u = (unsigned)i;

//3
unsigned u = 1;

//4
unsigned u = 1u;

gcc (4.8) 编译器在 1、2 和 3、4 之间生成的汇编代码没有区别。在编写实际代码时,(对我而言)通常使用形式 1 和 3 更方便,除非它超出正符号的范围。 (例如 3,333,333,333 表示 32 位 int)

有了这个功能,

void mpz_set_ui (mpz_t rop, unsigned long int op)

我用它作为,

mpz_set_ui(num, 3); //or an int variable in place of 3

,例如。

我对当前C(++)标准的理解是,在上述情况下没有必要明确声明为unsigned,但我不确定在某些情况下是否可能会有一些额外的任务将signed转换为unsigned ,或者当替换的有符号变量在目标无符号变量的范围内时,它总是完全相同的可执行文件。

最佳答案

转换结果不会有实际差异,隐式和显式转换做同样的事情。显式转换(在 C++ 中更可取 static_cast)的优点是清晰:如果您编写显式转换,没有人会怀疑您是否意外更改了符号。我认为 3) 和 4) 同样好。

关于c++ - 将正符号变量替换为无符号变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250542/

相关文章:

c++ - 空的 "else"子句在 C++ 中有什么意义吗?

c++ - DOMDocument C++ 内存管理

单击取消暂停 SDL2 音频的声音

C++ 变量数组

c++ - #include 指令中文件名的有效字符

将字符连接到一个句子 c

我可以以头文件实现中不存在的方式使用结构吗?

javascript - Promise 和 Node 使变量在不同的函数中可用

api - Magento Custom Api Code 无法传入参数( undefined variable 错误)

c++ - boost::graph 中的 DFS 更改图形内容