Код: Выделить всё
#include <stdio.h>
#define fo(upto) for(int i = 0; i < (int)upto; ++i)
int main() {
fo(2)
fo(3)
fo(4)
printf("%d\n", i);
}
Модератор: Модераторы разделов
Код: Выделить всё
#include <stdio.h>
#define fo(upto) for(int i = 0; i < (int)upto; ++i)
int main() {
fo(2)
fo(3)
fo(4)
printf("%d\n", i);
}
Вполне с вами согласна. Спасибо что поделились своим мнением
Читайте мои комментарии, я их пишу вынужденно но они все равно почему то не работают...
Возможно, что вы просто ошиблись разделом.
Конечно возможно. Я не нашла идеально подходящего поэтому разместила здесь. Отдельные мои комментарии не воспринимайте на свой счет. Я стараюсь быть конструктивной и по мере объектывной, но я все еще человек с кучей "болячек"
Макросы в XXI веке?
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Не такого я точно не читал...
Ну, так смотря где. В embedded программировании их полно до сих пор. Как и самого си.
Код: Выделить всё
#include <stdio.h>
#define fo(upto) for(int i = 0; i < (int)upto; ++i)
int main() {
int x = 1;
fo(x++)
printf("%d\n", i);
return 0;
}
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Код: Выделить всё
int x = 1;
for(int i = 0; i < (int)x++; ++i)
printf("%d\n", i);
Ну не вечный всё же. Остановится, когда x переполнится.
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Ага само собой.
Ну да, переменная то знаковая, не заметил.
Как нет?
Код: Выделить всё
i < (int)x++;
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Между прочим, переполнение знаковой переменной - это UB. Например, оптимизатор имеет полное право (но не обязан) заметить, что проверка может сработать только после переполнения, и удалить её.
Код: Выделить всё
#include <stdio.h>
#define fo(upto) for(int i = 0; i < (int)upto; ++i)
int main() {
int x = 1;
fo(x++)
{
if((i % 100000) == 0)
printf("%d\n", i);
}
return 0;
}
Может быть, но это си. Поэтому - как сложится. Исключений то нет. Как и перехватчика.
Код: Выделить всё
#include <stdio.h>
#define fo(upto) for(int i = 0, j = upto; i < j; ++i)
int main() {
int x = 1;
fo(++x)
printf("%d\n", i);
return 0;
}
Shell
make test
./test
0
1
инкримент и декримент, мусор
Код: Выделить всё
#define fod(upto) for(int i = upto; i > 0; --i)
Возможности препроцессора действительно могут быть интересными.olecya писала: ↑14.12.2020 10:22возможности препроцессора бывают интересными:Код: Выделить всё
#include <stdio.h> #define fo(upto) for(int i = 0; i < (int)upto; ++i) int main() { fo(2) fo(3) fo(4) printf("%d\n", i); }
Код: Выделить всё
#define repeat do {
#define until(CE) } while(!(CE))
Код: Выделить всё
#define FLAG1 1
#define FLAG1_t dd->flags&FLAg1
#define FLAG1_c dd->flags&=(~FLAg1)
#define FLAG1_s dd->flags|=FLAg1
#define FLAG1_i dd->flags^=FLAg1
Код: Выделить всё
void FLAG_t(uint32_t FLAG) { dd->flags&FLAG); }
void FLAG_c(uint32_t FLAG) { dd->flags&=(~FLAG)); }
void FLAG_s(uint32_t FLAG) { dd->flags|=FLAG); }
void FLAG_i(uint32_t FLAG) { dd->flags|^=FLAG); }
А что, C99 с inline тогда ещё не было?
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |