我在写一个名为absD的函数,它返回它的参数的绝对值。 我不想使用任何预定义的功能。现在,当我尝试编译它时,我得到一个解析错误。double的绝对值
我想要所有我必须做的事情来获得双倍的绝对值是改变符号位?这是我所
#include <stdio.h>
#include <stdlib.h>
#define PRECISION 3
double absD (double n)
{
asm(" fld %eax \n"
" movl $0x7FFFFFFFFFFFFFFF, %eax \n"
" pop %eax \n"
);
return n;
}
int main (int argc, char **argv)
{
double n = 0.0;
printf("Absolute value\n");
if (argc > 1)
n = atof(argv[1]);
printf("abs(%.*f) = %.*f\n", PRECISION, n, PRECISION, absD(n));
return 0;
}
我固定的花括号.. 我得到的错误是
~ $ gc a02
gcc -Wall -g a02.c -o a02
/tmp/ccl2H7rf.s: Assembler messages:
/tmp/ccl2H7rf.s:228: Error: suffix or operands invalid for `fld'
/tmp/ccl2H7rf.s:229: Error: missing or invalid immediate expression `0x7FFFFFFFF
FFFFFFF'
~ $
什么是编译错误? – 2010-02-12 01:34:50
而错误是...? – GManNickG 2010-02-12 01:35:05
科里希望*你*编译它,并将错误报告给他,并在完成后打嗝。 – 2010-02-12 01:40:43