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.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Какую функцию стоит использовать, чтобы получить значение, которое не будет фиксировать время других процессов? Язык С++
Как обрабатывать сообщения операционной системы в одном приложении Qt?