鱼C论坛

 找回密码
 立即注册
查看: 4019|回复: 18

求解释

[复制链接]
发表于 2013-3-31 23:34:40 | 显示全部楼层 |阅读模式
2鱼币
# include<iostream>
using namespace std;
int main()
{
        char ch='c';
        int a,b=13;
        float x,y;
        x=y=2.0;

        a=ch+5;
        x=b/2/x;
        y=b/y/2;
        cout<<"a="<<a<<endl;
        cout<<"x="<<x<<endl;
        cout<<"y="<<y<<endl;

        return 0;
}
各位大神,解释一下为什么X的最后结果是3而不是3.0,我调试的时候可是3.0的,为什么打印出来的结果就是3

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-31 23:34:41 | 显示全部楼层
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
        float a = 3.0;
        //默认形式
        cout<<"default:"<<a<<endl;

        //科学计数法
        cout.setf( ios_base::scientific, ios_base::floatfield );
        cout<<"scientific:"<<a<<endl;

        //定点格式
        cout.setf( ios_base::fixed, ios_base::floatfield );
        cout<<"fixed:"<<a<<endl;

        //恢复默认格式
        cout.setf( ios_base::fmtflags(0),ios_base::floatfield );
        cout<<"default:"<<a<<endl;
}
自己看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-1 07:13:14 | 显示全部楼层
这只是打印格式的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-1 13:06:20 | 显示全部楼层
不会的吧,我使用2010调试的时候输出就是3,不是3.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-1 13:28:48 | 显示全部楼层
好像是c++,不懂!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-1 16:15:24 | 显示全部楼层
x= b/2/x ;   b为int 类型     /   除法  自动取整数部分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-1 21:23:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-1 21:41:29 | 显示全部楼层
四叶草的回忆 发表于 2013-4-1 21:23
谢谢,不过我还是不怎么明白

就是说,a本身是同一个a,因为以不同的格式输出,所以看起来不一样了,但本质上都是同一个a的不同表现形式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-1 21:48:44 | 显示全部楼层
仰望天上的光 发表于 2013-4-1 21:41
就是说,a本身是同一个a,因为以不同的格式输出,所以看起来不一样了,但本质上都是同一个a的不同表现形式 ...

那为什么后面的Y不打印成默认的形式呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-1 21:52:04 | 显示全部楼层
四叶草的回忆 发表于 2013-4-1 21:48
那为什么后面的Y不打印成默认的形式呢

后面的Y也是以默认形式打印出来的,只不过。
默认形式是指:当没有小数部分的时候,就不显示小数点;当有小数部分的时候就显示小数点以及小数部分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-1 21:54:07 | 显示全部楼层
仰望天上的光 发表于 2013-4-1 21:52
后面的Y也是以默认形式打印出来的,只不过。
默认形式是指:当没有小数部分的时候,就不显示小数点;当有 ...

灰常感谢  你这句话让我彻底明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-1 22:03:43 | 显示全部楼层
四叶草的回忆 发表于 2013-4-1 21:54
灰常感谢  你这句话让我彻底明白

弱弱的问一下,如果是double型数据,也是这样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-1 22:47:00 | 显示全部楼层
cout<<默认是打印int类型的   3是int类型   而3.0不是  调试结果是对的   但是打印的时候出来结果就是3,因为打印的的是int类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-1 23:47:22 | 显示全部楼层

那为什么后面的Y不打印成默认的形式呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-3 21:08:11 | 显示全部楼层
编译器的实现不一样,这种问题没意义吧~:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-6 18:30:22 | 显示全部楼层
版主已经回答的很明白了。。。我就不弄斧了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-11 21:43:07 | 显示全部楼层
形式不一样  内涵是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-12 06:53:22 | 显示全部楼层
因为你的b是整数 你的b要是13.0 后面x就是3.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-12 14:55:58 | 显示全部楼层
你的b定义的是整型,在运算的时候转换成为整型的...接下来的都是整形的了....把b改为float b=13.0;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-15 08:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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