Я подозреваю, что NetBeans выполняет приведение типа для вас.
double a = 1;
double b = 1;
double c = a+b^2;
не действительный код C, оператор двоичной побитовое исключающее ИЛИ (^
) работает только на 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);
Пожалуйста, покажите вашу полную программу. Если это все, что у вас есть в файле C, это не полная программа и не может работать. – Mat
смотри, я положил его. – wantToLearn
Это еще не полная программа. В нем отсутствует ваш 'main' и включает. – Mat