在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个字节呢?

从‘void*’到‘int’的转换损失精度的更多相关文章

  1. 关于Linux下C编译错误(警告)cast from 'void*' to 'int' loses precision

    char *ptr; //此后省略部分代码 ) //出错地方 那句话的意思是从 void* 到 int 的转换丢失精度,相信看到解释有些人就明白了, 此问题只会出现在X64位的Linux上,因为在64 ...

  2. double转换为int以及浮点型相加损失精度问题

    最近在做支付相关模块的业务,数据库字段却使用的是double类型,其实也行,只要计算不在sql语句中进行,也是没有问题的. 预先的类属性设置的是Double类型,自己算的时候发现小数相加会出现损失精度 ...

  3. void (*f(int, void (*)(int)))(int) 函数解析 转

    今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者 ...

  4. void (*f(int, void (*)(int)))(int) 函数解析

    函数指针 今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往 ...

  5. 通过qsort(void * lineptr[], int left, int rifht, int (*comp)(void *, void *))解读指针函数和void指针

    原函数是<The C programint  language >5.11文本行排序的程序,如下: void qsort(void *v[], int left, int right, i ...

  6. mysql 字符串转数据丢失精度,mysql转换丢失精度,mysql CAST 丢失精度

    mysql 字符串转数据丢失精度,mysql转换丢失精度,mysql CAST 丢失精度 =============================== ©Copyright 蕃薯耀 2017年9月1 ...

  7. bigdecimal 与long int 之间转换

    BigDecimal与Long.int之间的互换 在实际开发过程中BigDecimal是一个经常用到的数据类型,它和int Long之间可以相互转换. 转换关系如下代码展示: int 转换成 BigD ...

  8. C/C++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算

    一.各进制赋值 1.十六进制赋值 int i=0x12AD; int i=0X12AD; int i=0x12Ad; int i=0X12Ad; //以上都是十六进制,表示十进制173: 2.八进制赋 ...

  9. C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);

    问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,&l ...

随机推荐

  1. 【贪心】Codeforces Round #401 (Div. 2) D. Cloud of Hashtags

    从后向前枚举字符串,然后从左向右枚举位. 如果该串的某位比之前的串的该位小,那么将之前的那串截断. 如果该串的某位比之前的串的该位大,那么之前那串可以直接保留全长度. 具体看代码. #include& ...

  2. Scala零基础教学【102-111】Akka 实战-深入解析

    第102讲:通过案例解析Akka中的Actor运行机制以及Actor的生命周期 Actor是构建akka程序的核心基石,akka中actor提供了构建可伸缩的,容错的,分布式的应用程序的基本抽象, a ...

  3. Ubuntu 16.04通过源码安装QUEM虚拟机

    下载编译安装: wget http://download.qemu-project.org/qemu-2.9.0.tar.xz tar xvJf qemu-2.9.0.tar.xz cd qemu-2 ...

  4. 使用Spring Boot集成FastDFS

    原文:http://www.cnblogs.com/ityouknow/p/8298358.html#3893468 上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Sp ...

  5. 依据出生日期Date 计算年龄

    依据出生日期计算年龄 public class DateGetAge { public static int getAge(Date birthDay) throws Exception { Cale ...

  6. 构建高性能web站点-1

    以下为阅读<构建高性能web站点>郭欣 著 这本书的适合读者: 1.编写web程序.关心站点性能,并且希望自己做的更加出色的开发人员 2.关心性能和可用性的web架构师 3.希望构建高性能 ...

  7. 【招聘App】—— React/Nodejs/MongoDB全栈项目:项目准备

    前言:最近在学习Redux+react+Router+Nodejs全栈开发高级课程,这里对实践过程作个记录,方便自己和大家翻阅.最终成果github地址:https://github.com/66We ...

  8. 在虚拟机安装 Linux Server (ubuntu-14.04-server)

    在虚拟机安装 Linux Server (ubuntu-14.04-server) 过程  从下载開始到成功安装历时约1小时 还算快的啦 可能国庆假期间网速快点吧 1. 下载安装文件 watermar ...

  9. 远程调用——hessian使用入门

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议,因为采用的是二进制协 ...

  10. 通过Spring使用远程访问和web服务

    http://docs.huihoo.com/spring/zh-cn/remoting.html     Spring2 提供的remote包学习笔记