==
сравнивает ссылки на объекты в Java и не является исключением для объектов String
.
Для сравнения фактического содержимого объектов (в том числе String
) необходимо использовать equals
.
Если сравнение двух объектов String
с использованием ==
оказывается true
, это связано с тем, что объекты String
были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String
. Не следует ожидать сравнения одного объекта String
, содержащего то же содержимое, что и другой объект String
, используя ==
для оценки как true
.
Хорошо, во-первых, оператор ^
в C / C ++ является бит-мутным XOR.
Теперь, что касается вашей проблемы с использованием функции pow()
, , некоторые googling показывают, что приведение одного из аргументов в double помогает:
result = (int) pow((double) a,i);
Обратите внимание, что я также передал результат в int
, так как все перегрузки pow()
возвращаются дважды, а не int
. У меня нет компилятора MS, поэтому я не мог проверить вышеописанный код.
Поскольку C99, существуют также функции float
и long double
, называемые powf
и powl
соответственно , если это какая-либо помощь.
включить math.h и скомпилировать с помощью gcc test.c -lm
Вместо использования ^
используйте функцию «pow», которая является предопределенной функцией, которая выполняет операцию Power, и ее можно использовать, включив заголовочный файл math.h
.
^
Этот символ выполняет операцию BIT-WISE XOR в C, C ++.
Замените a^i
на pow(a,i)
.
pow () не работает с int
, поэтому ошибка «ошибка C2668:« pow »: неоднозначный вызов перегруженной функции»
http: //www.cplusplus. com / reference / clibrary / cmath / pow /
Напишите свою собственную функцию питания для int
s:
int power(int base, int exp)
{
int result = 1;
while(exp) { result *= base; exp--; }
return result;
}
int
s должен автоматически повышаться до double
s, не так ли? Во всяком случае, ваша ссылка о C ++.
– peoro
30 January 2011 в 15:32
Вы действительно должны использовать pow (число, мощность) ;. К сожалению, караты не работают как силовой знак в C. Много раз, если вы не можете что-то сделать с другого языка, это потому, что для вас есть различная функция, которая делает это для вас.
Прежде всего ^
является Побитовым оператором XOR не силовым оператором.
Вы можете использовать другие вещи для поиска мощности любого числа. Вы можете использовать для цикла, чтобы найти мощность любого числа
. Вот программа для поиска x ^ y ie xy
double i, x, y, pow;
x = 2;
y = 5;
pow = 1;
for(i=1; i<=y; i++)
{
pow = pow * x;
}
printf("2^5 = %lf", pow);
Вы также можете просто используйте функцию pow () для поиска мощности любого числа
double power, x, y;
x = 2;
y = 5;
power = pow(x, y); /* include math.h header file */
printf("2^5 = %lf", power);
В C ^
есть побитовая XOR:
0101 ^ 1100 = 1001 // in binary
Для питания нет оператора, вам нужно будет использовать функцию pow
из math.h (или какой-либо другой подобной функции):
result = pow( a, i );
#include <math.h>
– peoro
30 January 2011 в 15:09
(int) pow((double) a,i)
- я тоже выдал результат, поскольку он возвращает double, а не int.
– Sergey Tachenov
30 January 2011 в 15:33
pow( (double)a, (double)i );
– peoro
30 January 2011 в 15:37