鱼C论坛

 找回密码
 立即注册
查看: 2683|回复: 2

在线等 急

[复制链接]
发表于 2012-4-27 08:23:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("d\t\tf\t\tlf\n");
printf("%d\t\t",1*3/3);
printf("%f\t\t",1*3/3);    为什么输出0?
printf("%lf\n\n",1*3/3);


printf("%d\t\t",1.0*3/3);  为什么输出0?
printf("%f\t\t",1.0*3/3);
printf("%lf\n\n",1.0*3/3);


double a=1*3/3;
float b=1*3/3;
int c=1*3/3;

printf("%d\t\t,%d\t\t,%d\n",a,b,c);
printf("%f\t,%f\t,%f\n",a,b,c);
printf("%lf\t,%lf\t,%lf\n\n",a,b,c);

  
double  A = 1.0*3/3;
float B = 1.0*3/3;
int C = 1.0*3/3;
  printf("%d\t\t,%d\t\t,%d\n",A,B,C);
  printf("%f\t,%f\t,%f\n",A,B,C);
  printf("%lf\t,%lf\t,%lf\n\n\n",A,B,C);



return 0;
}d               f               lf
1               0.000000                0.000000  为什么输出0?

0  为什么输出0?              1.000000                1.000000
0               ,1072693248             ,0               乱码?
1.000000        ,1.000000       ,0.000000
1.000000        ,1.000000       ,0.000000
0               ,1072693248             ,0
1.000000        ,1.000000       ,0.000000
1.000000        ,1.000000       ,0.000000

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-27 21:34:28 | 显示全部楼层
我猜测一下,printf是个函数,它的参数传递的过程中除了问题,printf("%d\t\t,%d\t\t,%d\n",a,b,c);
这句中的3个参数一个8个字节的double,一个是4字节的float,int也是4字节,现在把他们全部强制成4字节的int,这里出问题了。这句运行完后,a,b,c的值不变。可见在printf中出现问题,具体怎么个情况,asm学的不好,无法做出结论。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-28 12:44:54 | 显示全部楼层
C/C++技术交流群:149582523
欢迎c,c++的朋友们加入!期待共同学习进步!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 02:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表