c++程序求问,为什么结果是0

#include <iostream>
using namespace std;
double value(int a);

int main()
{
int b=value(11);
cout<<b;
}

double value(int a)
{
if (a<10)
return a+1.0;
if (a>9)
return 0.5;
}

因为 int 类型的关系。

int 类型会把小数部分截断,根据你的程序返回是 0.5,而变量 b 是 int 类型,会把 0.5 的小数部分截断,那么就剩下 0 ,所以结果是 0 。

如果你变量 b 声明为 float 类型或者 double 类型,则结果是 0.5 。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-19
#include <iostream>
using namespace std;
double value(int a);

int main()
{
double b=value(11);
cout<<b;
}

double value(int a)
{
if (a<10)
return a+1.0;
if (a>9)
return 0.5;
}
第2个回答  2012-03-19
int b=value(11);cout<<b;你定义的b是整形的,你改成double b = value(11);就行了!

c++程序求问,为什么结果是0
因为 int 类型的关系。int 类型会把小数部分截断,根据你的程序返回是 0.5,而变量 b 是 int 类型,会把 0.5 的小数部分截断,那么就剩下 0 ,所以结果是 0 。如果你变量 b 声明为 float 类型或者 double 类型,则结果是 0.5 。

求助: C++ 计算结果为何无故归零
问题出在1\/6,因为在C和C++语言中,整数除以整数,编译器会自动把结果取整,也就是1\/6=0.解决方法是用double或float数据除以6,也就是说把1\/6改成1.0\/6就行了.(x1到x4,y1到y4,8个值都要改)

c++中为什么=0
C语言中的=0是用来比较数值是否为0的操作,它可以用在条件语句、循环语句、函数返回值等地方。在C语言中,0表示假,非0表示真,所以使用=0来判断数值是否为0十分常见。例如,if(x==0)表示x的值是否为0,如果是,则条件为真,如果不是,则条件为假。需要注意的是,=0在C语言中的使用有时会和=...

C++ 一个简单程序 为什么输出一直是零
因为5\/9的操作时按照整型来计算的,所以5\/9的整型计算就是0 修改一下 c=(5.0\/9)*(F-32)将5写成5.0之后,就是按照浮点型计算的,所以就能算出小数了,不会为0

C++程序 返回结果为什么总是0?
也就是说你main函数 中的temp 在定义的时候是0你没有改变它的值 输出的一定是0 你可以这样写 修改Compare函数 int Compare(int a[N],int b[N],int i=0,int j=0,int k=0,int temp=0){ ...\/\/你的代码 return temp;} main中 加一个 temp=Compare(int a[N],int b[N],int i=0,...

c++输出结果为啥都是0啊
x = 0;y = 0;} Point(double x,double y) { this->x = x;this->y = y;} double getX() { return x;} double getY() { return y;} double distance(Point p) { return sqrt(pow(p.getX()-x,2)+pow(p.getY()-y,2));} };void main(){ Point p1(1,1);Point p2(2...

为什么我写的c++代码结果总是0??
vector<long> v(n);以上定义了有n个元素的vector,再用push_back就到v[n]以后的单元了,而p[v[i]]用的是v[0]..v[n-1]为下标,所以错了.改为 vector<long> v;即定义一个空的,这样下面的代码不必改就可输出正确结果.p的初始化可用:memset(p, 0, sizeof(long)*n);...

c++新手求助,为什么下面代码 无论输入什么输出的结果都是0.00 0.00
需要float型的数据,但是你从键盘输入的时候用的是%d,所以全读成了整数了。改成%f即可。for(i=0;i<5;i++){ scanf("%f",&score1[i]);\/\/改成%f } printf("please input 10 score:\\n");for(j=0;j<10;j++){ scanf("%f",&score2[j]); \/\/改成%f } 我调试过你的代码,修改之后...

C++ 为什么下面运行的结果一直是0啊??
if((k%2)==0)sum=sum-1\/(2*k+2); \/修改为 sum = sum - 1 \/(double)(2*k\/+2) 因为如果除数为整数,被除数也是,则结果会自动取整,就会变为0,造成精度丢失,所以这里将其转化为double else sum=sum-1\/(2*k+2);\/\/同上,但是没有发现这两个公式有差别,是不是写错啦 ...

为什么Dev-C++编译C语言计算出来的结果是0
那是因为你的输出语句写错了,v的前面多了一个取地址符号,输出时不需要使用取地址符号,输入时才会用到

相似回答
大家正在搜