программа пропускает условную конструкцию

В этом кусочке кода стоят условия для ввода чисел 0>, но программа пропускает отрицательные числа, хотя при вводе нуля выдает нужный принт. Есть предположение, что дело в типе переменных, но если изменить их на тот же int, то в оставшийся код работать не будет.

#include <stdio.h>
#include <string.h>

int main() {
    size_t wdth, hght, lngth;
    printf("Введите высоту табуретки: ");
    scanf("%zu", &hght);
    if(hght<=0){
        printf("Высота должна быть больше 0.");
        return 1;
    }
    printf("Введите ширину табуретки: ");
    scanf("%zu", &wdth);
    if(wdth<=0){
        printf("Ширина должна быть больше 0.");
        return 1;
    }
    printf("Введите длинну табуреки: ");
    scanf("%zu", &lngth);
    if(lngth<=0){
        printf("Длинна должна быть больше 0.");
        return 1;
    }
    int model[lngth][hght][wdth];
    memset(model, 0, lngth * hght * wdth * sizeof(model[0][0][0]));

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

Автор решения: citn

Как оказалось size_t - беззнаковый тип данных, и все же придется поменять все на int.

→ Ссылка
Автор решения: Andrei

Вам нужно заменить тип size_t. Тип size_t без знаковый, то-есть там нельзя хранить отрицательные числа. Он придуман для хранения размера который возвращает оператор sizeof. Он отрицательным не бывает. Вы можете заменить его на int, а после проверок введенных данных привести переменные к size_t. (size_t) width

→ Ссылка