Кто-нибудь знает, почему следующие коды сбой, когда он скомпилирован с g ++?Странный сбой во время выполнения
#include <iostream>
unsigned long getSumDivisors(const unsigned long number) {
unsigned long sum = 0;
for(unsigned long i = 0; i < number; ++ i) {
if(number % i == 0) {
sum += i;
}
}
return sum;
}
int main() {
std::cout << getSumDivisors(5);
return 0;
}
когда я удаляю сумму + = i; это не сбой.
Я попытался скомпилировать его под окнами и Linux Linaro с
г ++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 Copyright © 2012 Free Software Foundation, Inc. Это свободное программное обеспечение; см. источник условий копирования. Существует NO гарантия; даже для КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.
и
г ++ (ТДМ-2) 4.8.1 Copyright (C) 2013 Free Software Foundation, Inc. Это свободное программное обеспечение; см. источник условий копирования. Существует NO гарантия; даже для КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.
Сбой при компиляции или после запуска программы? У вас есть деление на нулевую ошибку, которая является неопределенным поведением. –