2012-10-29 1 views
-4
double a = 5; 
double b = 3; 
double c = a+b^2; 
printf("%f",c); 

Я использую NetBeans (os: ubunut).Ошибки компиляции в c программировании с использованием gcc 64 бит

Когда я пробую эту программу, он не дает ошибки компиляции. не за что.

Он просто не запускает его и говорит, что программа не удалась.

Почему нет ошибки компиляции? Это из-за компилятора или из-за моей настройки в NetBeans?

enter image description here

+0

Пожалуйста, покажите вашу полную программу. Если это все, что у вас есть в файле C, это не полная программа и не может работать. – Mat

+0

смотри, я положил его. – wantToLearn

+0

Это еще не полная программа. В нем отсутствует ваш 'main' и включает. – Mat

ответ

1

bitwise оператор применяется только на integral операнда

Поскольку b является double и ^ является bitwise оператор, так что это дает ошибку

+0

так почему у меня нет ошибки? – wantToLearn

+0

может быть связано с некоторыми настройками в netbeans ...попробуйте gcc или какой-либо std-компилятор или проверьте параметры компилятора и ошибки в netbeans. – Omkant

0

Я подозреваю, что 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); 
+0

Возможно, что искатель пытается использовать квадрат 'b' и должен использовать' double c = a + b * b; '. –

+0

@ EricPostpischil - хм, хорошо, я не считал это. Я обновлю – Mike

+0

, но понятия не имею о настройке? не знаю, есть ли что-то, что мне нужно изменить в моей обстановке или что? – wantToLearn

 Смежные вопросы

  • Нет связанных вопросов^_^