沉默的无言者 2014-10-30 11:53 采纳率: 50%
浏览 1834
已采纳

初学者关于C++的一个疑问

今天在学校做上机课,编写了一个输入圆半径然后计算圆的周长面积以及对应球体体积的小程序。本来只是小试牛刀,没想到出了一个百思不得其解的问题,代码如下:

#include <stdio.h>
#include <iomanip>
#include <iostream>

using namespace std;

int main()
{
    const double pi = 3.14;
    double r;
    double c;
    double s;
    double v;
    cout << "Please input a number to be the radius: ";
    cin >> r;
    c = 2 * pi * r;
    s = pi * r * r;
    v = 4 / 3 * pi * r * r * r; //注意此行
    cout << c << endl;
    cout << s << endl;
    cout << v << endl;
    system("pause");
    return 0;
}

此时输出的v值似乎自动忽略了前面的 4/3……如果将4改成4.0或者3改成3.0则输出正常!百思不得其解,求大神解答~~

  • 写回答

3条回答

  • Solyn, 2014-10-30 12:10
    关注

    因为没有给4和3数据类型,默认的4,3都是整形,所以相除的话,结果是1,1*任何数都是它本身,所以没用
    加上4.0,或者3.0以后表示把它强制转换为浮点型,所以结果是小数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?