如果我错了,纠正我,
int是4个字节,从-2,147,483,648到2,147,483,647(2 ^ 31)
长的值范围是4个字节,值范围从-2,147,483,648到2,147,483,647(2 ^ 31)
C++有什么区别?它们可以互换使用吗?
许多来源,包括微软,都将int和long类型都引用为4个字节,并且范围为(带符号)-2,147,483,648到2,147,483,647.如果实际上没有提供更大范围的值,那么拥有长基本类型有什么意义呢?
我在弄清楚确切的语义时遇到了一些麻烦std::string.length().该文件明确指出,length()返回字符的字符串中而且数量不是字节数.我想知道在哪些情况下这实际上有所作为.
特别是,这只与非char实例化相关,std::basic_string<>或者在存储具有多字节字符的UTF-8字符串时是否也会遇到麻烦?标准是否允许length()UTF8感知?
我已经用C++编程了很长一段时间,而且我对大多数东西非常熟悉.我从未理解的一件事是"长"数据类型.
我用Google搜索,但我仍然不知道它是什么.我发现页面说它的大小相同,并且与int的范围相同.那么使用它有什么意义呢?
我在这里发现了另一个堆栈溢出问题: long和int数据类型之间的区别
似乎两者之间的唯一区别是有时在不同系统上的大小不同.这是否意味着在64位机器上使用long的应用程序无法在32位机器上运行?如果是这样,那么根本不使用它们会不会更好?
我还注意到了一些名为"long int"甚至"long long"的东西!它是数据类型还是修饰符?
在GLib文档中,有一章关于类型转换宏.在关于转换int为*void指针的讨论中,它说(强调我的):
天真的,你可以试试这个,但这是不正确的:
Run Code Online (Sandbox Code Playgroud)gpointer p; int i; p = (void*) 42; i = (int) p;同样,该示例不正确,请勿复制.问题是在某些系统上你需要这样做:
Run Code Online (Sandbox Code Playgroud)gpointer p; int i; p = (void*) (long) 42; i = (int) (long) p;
(来源:GLib参考手册GLib 2.39.92,章节类型转换宏).
为什么演员long必要?
是否需要加宽int不作为指针演员的一部分自动发生?
我对编程比较陌生,希望能够为Linux和Windows制作原生C++程序.
我只是想知道作为一个初学者我应该首先学习低级语言,比如C和Vim中的汇编,还是我应该直接从带有C++的IDE开始?
可能重复:
int,long等的大小
`long`保证至少为32位?
我想找出我的计算机的每种数据类型的最大值.代码是:
int main() {
using namespace std;
cout << numeric_limits<int>::max() << endl;
cout << numeric_limits<long>::max() << endl;
cout << numeric_limits<long long>::max() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印:
2147483647
2147483647
9223372036854775807
Run Code Online (Sandbox Code Playgroud)
问题1:为什么int和long相同?
问题2:上面的输出来自64位的VS2010.我的c ++程序是否以64位运行?