while (i) {
printf("Digit (%d) = %d", d, ((num2/(pow(10,(i-1))))%10));
d++;
i--;
}
i
和d
是先前在函数中声明的int
值。我得到的错误是“Operands of '%' have incompatible types 'double' and 'int'.
”
即使在摆弄这些值之后,我仍然会收到此错误消息。
答案 0 :(得分:7)
这是因为pow
会返回double
。你必须对它进行类型化。将语句更改为:
printf("Digit (%d) = %d", d, ((int)(num2/(pow(10,(i-1))))%10));
答案 1 :(得分:3)
除了将分子转换为int
之外,您还可以调用fmod()
以浮点数执行模块化计算。
printf("Digit (%d) = %lf", d, fmod((num2/(pow(10.0,(i-1)))),10.0));