double a = 5;
double b = 3;
double c = a+b^2;
printf("%f",c);
我正在使用NetBeans(os:ubunut)。使用gcc進行c編程的編譯錯誤64位
當我嘗試這個程序它沒有給出編譯錯誤。一點也不。
它只是不運行它,並說程序失敗。
爲什麼沒有編譯錯誤?是因爲編譯器還是因爲我在NetBeans中的設置?
double a = 5;
double b = 3;
double c = a+b^2;
printf("%f",c);
我正在使用NetBeans(os:ubunut)。使用gcc進行c編程的編譯錯誤64位
當我嘗試這個程序它沒有給出編譯錯誤。一點也不。
它只是不運行它,並說程序失敗。
爲什麼沒有編譯錯誤?是因爲編譯器還是因爲我在NetBeans中的設置?
bitwise
操作僅適用於integral
操作
由於b
是double
和^
是bitwise
運營商,所以它給錯誤
爲什麼我沒有錯誤? – wantToLearn
可能是由於netbeans中的一些設置...嘗試gcc或任何std編譯器或檢查NetBeans中的編譯器和錯誤設置 – Omkant
我懷疑NetBeans是對你進行類型轉換。
double a = 1;
double b = 1;
double c = a+b^2;
是無效的C代碼,二進制按位XOR運算符(^
)僅適用於char
和int
類型;把這些代碼放在像gcc這樣的基本編譯器中,它會給你一個error: invalid operands to binary^(have ‘double’ and ‘int’)
。
這有可能是NetBeans的這樣做是這樣的:
double c = a+((int)b^2); // if you get an output of 4.0
或
double c = (int)a+(int)b^2; // if you get an output of 0.0
我真的不知道,但它沒有太大的關係。你知道(現在)它是無效的代碼,所以我建議不要這樣做。
現在,如果你不嘗試進行XOR b
和2,而是提高到b
兩個電源,這是不同的。 ^
不是這樣使用的。
你有兩種選擇來提高權力。首先,你可以簡單地做:
double c = a+b*b; //this is b^2 + 1
或者更一般地,你可以使用pow()功能從math.h
:
double c = a + pow(b, 2);
提問者很可能試圖平方'b'並應該使用'double c = a + b * b;'。 –
@EricPostpischil - 嗯,好點,我沒有考慮到這一點。我會更新 – Mike
,但不知道設置?不知道在我的設置中是否有需要改變的地方或什麼? – wantToLearn
請出示完整的程序。如果這就是C文件中的所有內容,那麼它不是一個完整的程序,並且不能運行。 – Mat
看我把它。 – wantToLearn
這還不是一個完整的程序。它缺少你的'main'並且包含。 – Mat