Мистика с вычитанием итератора

Имеется следующий код:

#include <iostream>

int main(){
    int t;
    std::cin >> t;
    for(int x=0; x<t; ++x){
        int n, k;
        std::cin >> n >> k;
        int a[n];
        int b[n];
        int ans = 0;
        for(int y=0; y<n; ++y){
            std::cin >> a[y];
        }
        for(int y=0; y<n; ++y){
            std::cin >> b[y];
        }

        for(int y=0; y<k; ++y){
            for(int z=0; z<n; ++z){
                if(b[z] == -1){
                    b[z] = k;
                    b[z] -= a[z];
                    b[z] -= y; // не вычитается (а если поставить число - вычитается)
                }
                std::cout << b[z] << "(" << y << ")" << a[z] << std::endl;
            }
            std::cout << "---" << std::endl;
            for(int z=0; z<n; ++z){
                if(b[z] != a[z]){
                    break;
                }
                ++ans;
            }
        }
        std::cout << ans;
    }
}

В начале третьего цикла for с итератором y из поля b[z] должно произойти вычитание и числа a[z] и итератора y. Но по какой-то причине итератор не вычитается.

Причем, если подставить вместо переменной у число, то оно вычитается без проблем.

Подскажите пожалуйста, что это за мистика?


Ответы (0 шт):