C ++中signed,signed int和int之间的区别?

Rob*_*rtS -1 c++ int signed types difference

int,signed intsignedC++的数据类型有区别吗?


并且:如果它们将处理内存中所有相同数量的空间(它们在内存分配的上下文中是等效的),那么它们之间的编译/运行时间是否存在性能差异(这当然不会显着)对于类似以下的程序,但在初始化数百个该类型的变量时)?


如果有任何显着差异或任何编译器警告或错误,我对其中任何一个进行了测试:

signed int

#include <iostream>

int main()
{
    signed int a = 5;
    std::cout << "The number entered is " << a << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

int

#include <iostream>

int main()
{
    int a = 5;
    std::cout << "The number entered is " << a << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

signed

#include <iostream>

int main()
{
    signed a = 5;
    std::cout << "The number entered is " << a << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

所有测试的输出都是等效的:

The number entered is 5
Run Code Online (Sandbox Code Playgroud)

但这并不意味着它在内存存储和性能方面必须相等。

提前致谢。

Fra*_*eux 7

您可以在此处阅读有关指定整数类型的规则。

第一个相关规则是,如果您不提供signedunsigned编译器假定signed.

signed - 目标类型将具有签名表示(如果省略,这是默认值)

另一个规则是,如果您提供signedorunsigned并且没有大小,int则假定。所以intsigned intsigned在功能上完全等效。

int- 基本整数类型。如果使用下面列出的任何修饰符,则可以省略关键字 int。

编辑:您可以使用sizeof运算符 (例如sizeof(int)sizeof(a))检查类型的大小(例如或)以及数字类型可以使用std::numeric_limits(例如std::numeric_limits<int>::max())表示的值范围。