double a = 5;
double b = 3;
double c = a+b^2;
printf("%f",c);
我正在使用NetBeans(os:ubunut)。
当我尝试这个程序时它没有给出编译错误。完全没有。
它只是不运行它并说程序失败。
为什么没有编译错误?是因为编译器还是因为我在NetBeans中的设置?
答案 0 :(得分:1)
bitwise
运算符仅适用于integral
操作数
由于b
为double
且^
为bitwise
运算符,因此它会给出错误
答案 1 :(得分:0)
我怀疑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
提升到2的力量,那就不同了。 ^
不是那样使用的。
你有两种选择来提升能力。首先你可以做到:
double c = a+b*b; //this is b^2 + 1
或者更一般地说,您可以使用math.h
中的pow()函数:
double c = a + pow(b, 2);