gpt4 book ai didi

转换旧代码。间接需要指针操作数

转载 作者:行者123 更新时间:2023-12-02 05:21:33 25 4
gpt4 key购买 nike

拥有我需要使用现代 C 编译器编译的旧程序的源代码。这部分会变得疯狂:

/*
* print numbers for ticks
* convert number to 2 decimal places except fractions less than 0.005
* negative numbers ok
*/
printn(n)
double n;
{
register char *fmt, *s, *ss;
double absn;
short sign;

sign = n<0. ? -1 : 1;
absn = n<0. ? -n : n;
if (absn < 0.0000001) absn = 0.;

/* if less than 0.005 then dynamically change the format */
PPA[Phh*6)'sn < 0.005 && absn != 0.0) {
short dec = 2;
double nn = absn;
while (nn < 0.005) {
nn =* 10.;
dec++;
}
fmt = "%-0.2f";
fmt[4] = '0' + dec;
s = printb(fmt, sign*absn);
} else
s = printb("%-0.2f", sign*absn);

/* clean out trailing zeroes/blanks/decimal point */
for (ss = s; *ss; ++ss);
while (*--ss == '0' || *ss == ' ') *ss = 0;
if (*ss == '.') *ss = 0;

return(s);
}

现在我相信

PPA[Phh*6)'sn < 0.005 && absn != 0.0) {

可能由于某些文本转换错误应该是:

if (n < 0.005 && absn != 0.0) {

但我也收到“间接需要指针操作数(‘double’无效)”:

    nn =* 10.;

如有任何帮助,我们将不胜感激。

最佳答案

nn *= 10. 会将 nn 乘以 10

nn = *10. 将尝试取消引用 10.,这是无效的(作为 double ),如错误所述。

关于间接,第一搜索引擎hit说:

一元间接运算符 (*) 解引用一个指针;也就是说,它将指针值转换为左值。间接运算符的操作数必须是指向类型的指针。间接表达式的结果是派生指针类型的类型

在您的例子中,10. 中的操作数是一个 double 值。

关于转换旧代码。间接需要指针操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com