Kraaa.Неужели это плохо для нижнего слоя, а затем переполняет неподписанную переменную?
Я студент в школе программирования, которая требует от нас писать функции C с менее чем 25 строками кода. Итак, в основном, каждая строка подсчитывается. Иногда, у меня есть необходимость сократить задания следующим образом:
#include <stddef.h>
#include <stdio.h>
#define ARRAY_SIZE 3
int main(void)
{
int nbr_array[ARRAY_SIZE] = { 1, 2, 3 };
size_t i;
i = -1;
while (++i < ARRAY_SIZE)
printf("nbr_array[%zu] = %i\n", i, nbr_array[i]);
return (0);
}
Важной частью этого кода является size_t
счетчика с именем i
. Чтобы сэкономить несколько строк кода, я хотел бы предварительно увеличить его в состоянии цикла. Но, поскольку стандарт C определяет size_t
как неподписанный тип, то, что я в основном делаю здесь, переполняет переменную i
(от 0 до очень большого значения), а затем переполняет ее один раз (от этого большого значения до 0).
Мой вопрос заключается в следующем: независимо от плохой практики от того, чтобы сократить наш код, это безопасно установить (size_t
) переменную unsigned
-1, то Преинкремент его на каждой итерации для просмотра массив?
Спасибо!
Чтобы помочь с «менее 25 строк», можно устранить '#define ARRAY_SIZE 3'. Используйте 'int nbr_array [] = {1, 2, 3}; while (++ i
chux
Вы также можете быть немного умным aleck с строками кода и просто поместить все (но предварительную обработку) в одну строку. .. – Cornstalks
Вы можете написать C99-совместимую программу, опуская 'return 0;'. Это сохранит одну строку (и скобки не нужны в 'return 0;', сохраняя два символа для дополнительного кредита). –