我在寫一個名爲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