sourcePicture - объект класса CImage
cout << sourcePicture.GetPitch(); //выводит -2100
cout << sizeof(bgr); //выводит 3
cout << sourcePicture.GetPitch()/3; //выводит -700
cout << sourcePicture.GetPitch()/sizeof(bgr); //выводит 14543789234
Какого чёрта?
Всё очень просто. Следите за типами выражения.
Тип sourcePicture.GetPitch(), судя по всему, signed int. Тип константы 3 есть int, и судя по всему, на вашем компиляторе int есть signed int. Согласно правилам, при делении signed int на signed int тип результат — тоже signed int.
Теперь, тип выражения sizeof(bgr) — unsigned int. При делении, согласно тем же правилам, происходит конверсия делимого к unisigned int. Следовательно, результат должен быть такой:
(unsigned int)(-2100) / (unsigned int)3 = 4294965196 / 3 = 1431655065
Проверьте ваш результат, вы пишете 14543789234.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости