Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用无符号变量替换正符号变量_C++_C_Variables - Fatal编程技术网

C++ 用无符号变量替换正符号变量

C++ 用无符号变量替换正符号变量,c++,c,variables,C++,C,Variables,(在C/C++中) gcc(4.8)编译器在1、2和3、4之间生成的汇编代码中没有区别。在编写实际代码时,(对我来说),使用表1和表3通常更方便,除非它超出了正负符号的范围。(如3333表示32位整数) 有了这个功能, 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(++)标准的理解是,在上述情况下,没

(在C/C++中)

gcc(4.8)编译器在1、2和3、4之间生成的汇编代码中没有区别。在编写实际代码时,(对我来说),使用表1和表3通常更方便,除非它超出了正负符号的范围。(如3333表示32位整数)

有了这个功能,

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++中,显式转换的优点,最好是 StistalPasks,是清晰的:如果你写了显式的CAST,没有人需要怀疑你是否在意外中改变了SIGNNED。我认为3)和4)同样好。

除了模板实例化或超载分辨率之外,这是不必要的。如果它太大,那么任何适当的编译器都可以让你知道它。
mpz_set_ui(num, 3); //or an int variable in place of 3