-1

我正在尝试让程序打印出浮点值。我试过 put %f,它给了我相同的数字,但最后是 0 。在我的函数定义中,我尝试使用temp双精度,但它一直说“表达式必须具有整数类型”。

#include <stdio.h> 

int modifyIntegral();

int main() {
    int value;

    value = modifyIntegral();

    printf("The Updated value : %d\n", value);   
}

int modifyIntegral() {
    double value;
    double temp;

    scanf_s("%d", &value);

    temp = (value < 0) ? -value : value;

    if (temp % 10 > temp / 100 % 10) {
        temp += -temp % 10 + temp / 100 % 10;
    }
    else {
        temp += 100 * (temp % 10 - temp / 100 % 10);
    }

    return (value < 0) ? -temp : temp;
}
4

2 回答 2

2

您不能在双精度数上使用模数 (%) 运算符。

于 2013-11-06T02:42:19.457 回答
1

你的程序有很多问题。

首先,%是一个整数运算符,因此您不能在浮点类型上使用它。改为使用fmod()。但是你不能通过像这样获得模 10 来获得浮点值的数字而不删除小数部分

其次,您声明valuedouble但随后将其读为 int

scanf_s("%d", &value);

这将导致未定义的行为

我不明白你需要转换什么?像您所做的那样的操作可以完成并且应该以整数完成。

于 2013-11-06T03:08:37.250 回答