gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:22 28 4
gpt4 key购买 nike

(在 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com