Это предупреждение вызывается переключателем -Wsign-conversion
, который обнаруживает, что вы берете переменную со знаком, и преобразовывает ее в переменную без знака, что может изменить значение.
Это не делает это для положительных литералов, где преобразование, очевидно, не меняет значение, потому что это было бы бессмысленно и действительно раздражало.Вы получите его для отрицательного литерала, например -5
.
(Технически это литерал 5
с примененным унарным оператором отрицания, а не «отрицательный литерал»!).
Для именованных переменных он не может реально предсказать, каким будет значение, так что из-за осторожности.
Вы должны сделать вашу переменную start
иметь типsize_t
.