首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

菜鸟的小疑点,希望大侠回答

2013-04-07 
初学者的小问题,希望大侠回答用VS2010,写下面代码,为什么在不能整除的情况下,z的结果是整数,而不是float。#

初学者的小问题,希望大侠回答
用VS2010,写下面代码,为什么在不能整除的情况下,z的结果是整数,而不是float。
#include <iostream>
using namespace std;

void main()
{
int x,y;
float z;

cout << "please enter 2 numbers" << endl;
cin >> x >> y;

z =x/y; //一定要显式写在这样子才能得到浮点结果吗:z =(float)x/(float)y
cout << "x/y = "<< z << endl;

}

菜鸟的小疑点,希望大侠回答
[解决办法]
基本运算,打错了,推荐你看看《C++ Primer》,全面一点
[解决办法]
x跟Y都是整型,除法运算就按照整型的运算规则进行,所以x/y得到的是截断小数位的。赋值时再将这个整型转换成float的。
一句话,也就是做除法时,编译器不知道它的结果将会赋值给什么类型的变量。
[解决办法]
z =(float)x/y;将x强制类型转换,这样(x/y)这个值才是float型,否则(x/y)这个值是int型,那int型赋值给float也只有整数部分!!
[解决办法]
先计算 x/y的,之后再将这个结果类型转换,所以不管怎样 x/y总是整数,再转换也还是整数

热点排行