使用gcc 64位进行c编程时的编译错误

时间:2012-10-29 14:28:32

标签: c compiler-errors netbeans-7

double a = 5;
double b = 3;
double c = a+b^2;
printf("%f",c);

我正在使用NetBeans(os:ubunut)。

当我尝试这个程序时它没有给出编译错误。完全没有。

它只是不运行它并说程序失败。

为什么没有编译错误?是因为编译器还是因为我在NetBeans中的设置?

enter image description here

2 个答案:

答案 0 :(得分:1)

bitwise运算符仅适用于integral操作数

由于bdouble^bitwise运算符,因此它会给出错误

答案 1 :(得分:0)

我怀疑netbeans正在为你进行类型转换。

double a = 1;
double b = 1;
double c = a+b^2;

是无效的C代码,二进制按位XOR运算符(^)仅适用于charint类型;将该代码放在像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提升到2的力量,那就不同了。 ^不是那样使用的。

你有两种选择来提升能力。首先你可以做到:

double c = a+b*b; //this is b^2 + 1

或者更一般地说,您可以使用math.h中的pow()函数:

double c = a + pow(b, 2);