系列文章目录
1、理解32位和64位下long类型和int类型不同
2、理解release和debug版本编译的可执行程序的区别
3、谨慎在64位下对long类型与int类型去赋值和相互转换
文章目录
- 系列文章目录
- 前言
- 一、int、long类型
- 二、使用步骤
- 1.示例代码
前言
编译环境:qt -c++、linux系统
一、int、long类型
二、使用步骤
在64操作系统和64位编译器下
如果用整型int去接收long,可能会造成数据溢出但是在32位编译器下不会出现此问题,因为long和int的字节数都是4。
1.示例代码
代码如下(示例):
char buf[128] = "1111111111111 8.98767";
int tmp1 = 0;
double tmp2 = 0;
sscanf(buf, "%ld %lf", &tmp1, &tmp2);
cout << "tmp1 = " << tmp1 << endl;
cout << "tmp2 = " << tmp2 << endl;
分析代码:
代码第四行,我们使用了整型int去接受字符串buf里面的长整型long,
如果在32位下 可能不会出现任何问题,因为long和int的字节数和范围是一样的
如果在64位下如果要接受的长整型范围比较大,我们用整型去接受可能就会造成内存泄漏,软件崩溃崩溃问题,因为long是8字节而int是4字节。