Вот детерминированная ошибка:
void myStrCpy (char *s, char *d) {
for (int i = 0; i < strlen (s) - 1; i++)
*d++ = s[i];
*d = '\0';
}
Очевидно, что он забывает скопировать последний символ строки, означающий, что копия меньше на один символ.
Для объекта с оператором присваивания:Вы можете использовать:
#include <stdio.h>
int main (void) {
short x = 2094967295;
printf ("%d\n", x);
return 0;
}
, который выводит -22017
последовательно.
Или даже небольшой фрагмент из недавнего вопроса о SO:
int x = 2^5; // set x to 32 for bitmasking later.
Это ошибка, хотя пользовательская ошибка одна.
Или даже:
int *x = malloc (4);
в приложении, которое должно быть переносимым.