2012-04-25 33 views
0

在C++中,short int,unsigned int,signed int和int有什么区别?有什么应用程序?你什么时候使用short int,unsigned int等?这些数据类型有什么区别?

+5

你应该阅读这个:http://en.cppreference.com/w/cpp/language/types,如果他们回答你的问题,你应该回去看看你以前的一些问题并接受答案:(阅读这个:http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work) – 2012-04-25 03:36:06

+4

我不能低估这个够硬 - “这个问题没有显示任何研究工作。” – ildjarn 2012-04-25 03:47:06

+0

现在是2016年。回顾这篇文章,我不知道我为什么问这个问题!愚蠢的我 – Zik 2016-06-14 03:43:40

回答

4

看一看!你告诉我!

#include <iostream> 
#include <cstdlib> 
#include <limits> 
using namespace std; 

int main(){ 

    cout << "min_int = " << numeric_limits<int>::min() << endl; 
    cout << "max_int = " << numeric_limits<int>::max() << endl; 

    cout << "min_unsigned_int = " << numeric_limits<unsigned int>::min() << endl; 
    cout << "max_unsigned_int = " << numeric_limits<unsigned int>::max() << endl; 

    cout << "min_short = " << numeric_limits<short>::min() << endl; 
    cout << "max_short = " << numeric_limits<short>::max() << endl; 

    cout << "min_unsigned_short = " << numeric_limits<unsigned short>::min() << endl; 
    cout << "max_unsigned_short = " << numeric_limits<unsigned short>::max() << endl; 

    return EXIT_SUCCESS; 
} 
+1

90%的编程问题的最佳答案:让我们试试看! – chris 2012-04-25 03:45:31

+0

我遇到的问题是,您可能陷入陷阱中,您认为这些是您永远不会了解的限制可能会改变的唯一值。 – 2012-04-25 03:50:07

+0

詹姆斯是正确的。您看到的大小将取决于您的体系结构,但有一点是肯定的,无符号变量不能为负数,int总是长于short,而long总是长于int。 – 2012-04-25 03:54:11

1

在大多数情况下,int是你想要的,如果你要严格使用非负数,unsigned是好的。但是,标准库函数通常会返回错误的负值。

短主要用于较大数据结构中的小值作为内存优化,或用于与网络或文件格式接口。

1

如果您想创建一个只接受正数的函数,可以通过限制其他人传递负值或将函数从检查传递值的符号中解放出来,您可以使用无符号INT。当然,这并不能阻止任何人将一个负int转换为一个unsigned int。这只会导致你的函数将其解释为一个巨大的数字(因为最重要的位将是1来代表先前的负数),但这是造成该值的人的错误。