当前位置:  技术问答>linux和unix

求救:关于long long 的问题!

    来源: 互联网  发布时间:2015-05-05

    本文导语:  各位高手:小弟写了一段很小的程序测试用,代码如下:  #include   #include   main()  {  unsigned long long mask;  unsigned long long val;  char c[4];  mask = 255;  val = 3;  printf("Output use lld : val = %lld,mask = %lldn",val,mas...

各位高手:小弟写了一段很小的程序测试用,代码如下: 
#include  
#include  
main() 

unsigned long long mask; 
unsigned long long val; 
char c[4]; 
mask = 255; 
val = 3; 

printf("Output use lld : val = %lld,mask = %lldn",val,mask); 

printf("Output use 2x : val = %2x,mask = %2xn",val,mask); 
printf("Output use 2x : mask = %2x,val = %2xn",mask,val); 
printf("mask = %2xn",mask); 
printf("val = %2xn",val); 

printf("%2xn",(mask & val)); 

memset(c,0,4); 
sprintf(c,"%2x",(mask & val)); 
printf("%sn",c); 


x86平台下,gcc编译运行,结果如下: 
Output use lld : val = 3,mask = 255 
Output use 2x : val = 3,mask = 0 
Output use 2x : mask = ff,val = 0 
mask = ff 
val = 3 



PowerPC平台下,gcc编译运行,结果如下: 
Output use lld : val = 3,mask = 255 
Output use 2x : val = 30013000,mask = 0 
Output use 2x : mask = 30013000,val = 0 
mask = 30013000 
val = 30013000 
30013000 

均不能完全正确。 
不知什么原因,但是如果使用long或者int代替long long 定义,就没有问题。 
各位高手指教一二啊! 
小弟谢了,先!

|
这个应该算是你的测试程序的问题。
提供给printf的格式信息必需得和提供给printf的参数一模一样才行。
对于unsigned long long应该使用"%2llx"而不是"%2x"

|
在x86下是可以理解的 反汇编看一下也能知道 
printf("Output use 2x : val = %2x,mask = %2xn",val,mask); 
printf("Output use 2x : mask = %2x,val = %2xn",mask,val); 

0x80483d8 :    pushl  0xfffffff4(%ebp)
0x80483db :    pushl  0xfffffff0(%ebp)
---Type  to continue, or q  to quit--- 
0x80483de :    pushl  0xffffffec(%ebp)
0x80483e1 :    pushl  0xffffffe8(%ebp)
0x80483e4 :    push   $0x8048560
0x80483e9 :    call   0x80482ac 

在栈上虽然把16个字节都压进去了 但是printf的实现 看到%2x 只会往上
跳4个字节 自然都是0.
不过 ppc 就搞不懂是怎么回事了 也没有这机器 能看看汇编之后的代码

    
 
 

您可能感兴趣的文章:

  • 紧急求救:jsp对Oracle数据库中long 型数据进行模糊查询 如何查?
  • 紧急求救:对Oracle数据库中long 型数据进行模糊查询 如何查?
  • 高分求救:谁用过JSP处理ORACLE数据库中的LONG RAW类型字段
  • Shell Script 发生 "arg list too long" 的问题,求救!
  • 求救啊 高分求救 UNIX下关于进程通讯的问题~
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题 (分不够可加)
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题
  • Linux8.0 修改字符集后,再次进系统,无图形界面问题。。。求救。。
  • SUSE网络打印机问题,在线等,求救!!
  • 求救:在校学生问个问题~~~~~~~~操作系统中的job和process的区别!
  • 安装solaris 10出现问题,向高人求救,谢谢
  • GCC的一个奇怪的问题,求救!
  • #######Linux网卡配置问题(求救!!!急!!!)#######
  • 求救:关于结构体数据长度的补位问题
  • tomcat的问题(新手求救----------------------在线等候)
  • 高分求救!!!(200)我回多问相同问题来给分的,急急急
  • socket编程:recv(...)函数问题求救
  • 求救,关于Yacc的问题!急!!!!!!急!!!!
  • 求救liunx下网卡驱动问题~! iis7站长之家
  • linux 安装问题,求救高手
  • Linux 新手乱码问题,求救
  • 求救!!!!!TOMCAT问题!牛人帮忙啊!
  • 高分求救!一个随机数产生的问题
  • jbuilder安装问题求救
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求救!求救!紧急求救!为什么更新不了所指定的内容?
  • 求救!!!硬件高请进、、、、、、(十万火急,高分求救。)
  • 求救求救!!
  • 求救!!!求救!!!机器不能正常启动
  • 关于jdbc,求救求救!在线等待,马上给分
  • 紧急求救,root用户无权限删除文件
  • 晕,特晕...求救...
  • 高分求救~~如何取得linux下进程完整命令行字符串,就是的ps -ef 完整的全路径的CMD那一列,求救!!!!附现在的代码
  • 求救!weblogic6.0后台运行正确,前台页面跳转或调用其他页面时出“页面无法显示错误”
  • 求救:java里如何取整一个浮点数(不做四舍五入)
  • 紧急求救!!
  • Linux下无法启动apache 高分求救!在线等待
  • 求救,linux和windows之间如何联成局域网(设置),并且相互之间移动文件。
  • 求救!!在Redhat7.3下安装scim0.9.3怎么安装?
  • 散分一百,紧急求救!ROOT密码忘记
  • 局域网内如何联网呀求救
  • 求救:crontab不运行 急急急啊
  • 150分求救安装
  • 100分求救,谁有做好的关于JSP于数据库操作的源代码?
  • 怎样把一年中的每个星期的时间段取出来?求救!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3