Сейчас его читаю, а что он плох?
если я так вернусь то потеряю все коммиты которые были после а
Мне goto запретил пользоваться Сиддхартха Рао)
где можно почитать про присваивания подобных {0, 0, 0, 0} для разных типов и объектов?
Тут же создается массив указателей, адрес которых = 0.
int i = *((int*)arr);
Здесь происходи разыменование 1 элемента массива указателей,
почему не выводит сегфолт?
printf выводит 0?
arr будет указывать на первый байт первого элемента массива float чисел.
Если же определять переменную в каждой единице трансляции, то линковщик выругается на redefinition symbol,
в этом случае поведение такое как я описал в ответе
$ cat a.c
#include <stdio.h>
void f(void);
int i;
int main()
{
printf("i = %d\n", i);
f();
printf("i = %d\n", i);
}
$ cat b.c
int i;
void f(void)
{
i = 42;
}
$ gcc -W -Wall a.c b.c -o td
$ ./td
i = 0
i = 42
PythonistGit,
cc
в разделе clobbers -- это condition codes, флаги процессора. Потому чтоadd
устанавливает флаги по результатам операции, а значит предыдущее значение флагов будет потеряно.