2016-10-10 15 views
0

這是我的代碼 -C基本數據 - 所謂的對象不是一個函數或函數指針

main() 
{ 

    double x; 
    double y = pow(((1/3 + sin(x/2))(pow(x, 3) + 3)), 1/3); 
    printf("%f", y); 

    return 0; 
} 

double y = pow((1/3 + sin(x/2))(pow(x, 3) + 3), 1/3);得到一個錯誤,它說,所謂的對象不是一個函數或函數指針。我不明白 - (1/3 + sin(x/2))(pow(x, 3) + 3)pow(x, y);的第一個元素,那就是我想提升到y(1/3)的x值。問題在哪裏?我對c基本很陌生,但我無法在任何地方找到答案。

+0

除了你的奇怪的語法造成的錯誤,你應該知道'1/3'是整數除法,等於零。 – interjay

+0

雖然語法有什麼問題? – ImReallyBadAtCoding

回答

0

如果要乘以,則需要使用*運算符。不能將帶括號的表達式彼此相鄰以表示乘法。

(1/3 + sin(x/2))*(pow(x, 3) + 3) 
+0

哦,上帝該死。用戶名檢查出,謝謝。 – ImReallyBadAtCoding

+0

@ImReallyBadAtCoding很高興我能幫上忙。如果您發現它有用,請隨時接受此答案。 – dbush

+0

當然!還有一件事 - pow(x,y/z)總是給我返回1 - 是否有任何函數像sqrt一樣工作,但是讓我選擇我自己的根? – ImReallyBadAtCoding

0

這是因爲pow的返回值是雙重的,而不是函數。也許你想要做的就是傳遞給pow作爲第一個pow的第二個參數。

+0

是的,但那有什麼問題?我想要y返回pow函數的double值。 – ImReallyBadAtCoding

+0

我不能讀你的代碼,因爲它有太多的括號 –

0
#include <stdio.h> 
#include <math.h> // For pow() function 

int main() { 

    // Initialize with whatever value you want 
    double x = 100; 

    // Make sure to use an arithmetic operator 
    double y = pow(((1/3.0 + sin(x/2))*(pow(x, 3) + 3)), 1/3.0); 

    // Use right format specifier 
    printf("%lf", y); 

    return 0; 
} 
  1. 不要忘了包括math.h庫。
  2. 用值初始化x
  3. 避免使用整數除法1/3,而不是使用1/3.01.0/3.0,因爲1/3 == 0
  4. 使用算術運算符(+,-,*,/)在中間pow()之前,如pow(((1/3.0 + sin(x/2))+(pow(x, 3) + 3)), 1/3.0)
  5. (選項)使用y的格式說明符%lf。但是你可能會逃脫%f