Это код: A [0] (в основной функции) должен быть равен 0, а не 1. Я не могу найти свою ошибку. Я предполагаю, что проблема находится где-то в функции and1, но опять-таки я не могу ее найти. В любом случае, я уверен, что первое предложение очень хорошо освещало проблему, но сайт заставляет меня писать дополнительную информацию.Неправильный вывод
#include <iostream>
#include <string>
// V and^or
using namespace std;
int A[] = {0, 1, 1};
int B[] = {1, 0, 1};
int* and1(int A[], int B[])
{
int ret[3];
for(int i = 0; i < 3; i++)
{
if(A[i] == 1 && B[i] == 1)
{
ret[i] = 1;
}
else
{
ret[i] = 0;
}
}
return ret;
}
int* or1(const int A[], const int B[])
{
int ret[] = {0 ,0 ,0};
for(int i = 0; i < 3; i++)
{
if(A[i] == 1 || B[i] == 1)
{
ret[i] = 1;
}
else
{
ret[i] = 0;
}
}
return ret;
}
int main()
{
int* a = and1(A, B);
int* b = or1(A, B);
if(*(a+1) == *(b+1))
{
cout << a[0] << endl;
}
return 0;
}
Если вы не можете найти свою ошибку, тогда выполните debug – nabroyan
, вы возвращаете указатель на локальный массив в or1 и and1 – AnatolyS
Почему бы вам не передать результирующий массив в качестве третьего параметра и сохранить результат в нем и вернуть void? Это изменение прототипа void and1 (int * A, int * B, int * ret) и то же для or1. Это гарантирует, что сделанные вами изменения будут сохранены в результате. – IcyFlame