从‘void*’到‘int’的转换损失精度
2024-08-31 09:19:41
在CentOS6.2 64位下编译一下代码,不通过,提示
./11_2.cpp: In function ‘int main(int, char**)’:
./11_2.cpp:28: 错误:从‘void*’到‘int’的转换损失精度
./11_2.cpp:31: 错误:从‘void*’到‘int’的转换损失精度
#include <unistd.h>
#include <cstdio>
#include <pthread.h> using namespace std; void *thr_fn1(void *arg)
{
printf("thread 1 returning\n");
return (void*);
} void *thr_fn2(void *arg)
{
printf("thread 2 exiting\n");
pthread_exit((void*));
} int main(int argc, char **argv)
{
pthread_t tid1, tid2;
void *tret; pthread_create(&tid1, NULL, thr_fn1, NULL);
pthread_create(&tid2, NULL, thr_fn2, NULL); pthread_join(tid1, &tret);
printf("thread 1 exit code %ld\n", (long)tret); pthread_join(tid2, &tret);
printf("thread 2 exit code %ld\n", (long)tret); return ;
}
既然提示精度损失,那么看一下各自的精度即可:
#include <iostream> using namespace std; int main(int argc, char **argv)
{
cout << sizeof(int) << endl;
cout << sizeof(long) << endl;
cout << sizeof(void*) << endl; return ;
}
执行结果:
4
8
8
好吧,确实是精度损失了,从4个字节转换为8个字节。但是问题来了,为什么在64位下,指针是8个字节呢?
最新文章
- 【转】angular指令入坑
- iOS 下ARC的内存管理机制
- FileReader本地预览图片
- css+javascript 写的HTML5 微信端输入支付密码键盘
- Yslow-23条规则编辑
- TF-IDF与余弦相似性的应用(一):自动提取关键词 - 阮一峰的网络日志
- Oracle的海量存储技术
- QT自动补全设置
- 获取select选中的值
- 找到python官方标准库文档
- Vijos P1114 FBI树【DFS模拟,二叉树入门】
- 从HTTL模板引擎看软件设计原则
- spring-cloud-config——Quick Start
- MyEclipse运行Java出错:could not find the main class:test.program will exit(导入项目)
- Python Yaml 学习
- 2.logback+slf4j+janino 配置项目的日志输出
- UIResponder NSSet UITouch UIEvent
- Thunder——基于NABCD评价“欢迎来怼”团队作品
- BZOJ5217:[Lydsy2017省队十连测]航海舰队——题解
- mysql数据库cmd直接登录