[07:30:43] <Kemet> что здесь будет происходить и какой результат получится?
[07:30:52] <Kemet> int stride;
uint height;
T* fStart, fBuf;

IF ( stride < 0 ) THEN
fStart = fBuf - int(height - 1) * stride;
}
[07:31:12] <Kemet> еьфу
[07:32:27] <Kemet> https://bpaste.net/
[07:32:34] <Kemet> if(stride < 0)
{
fStart = fBuf - int(height - 1) * stride;
}
[07:34:18] <Kemet> здесь, блин, намешаны указатели, беззнаковые, знаковые...
[11:55:23] <_valexey_> Kemet: получаем указатель на первый элемент. Вроде все просто :-)
[13:29:58] <TRUE> Это код стека какого-то?
[14:34:46] <Kemet> _valexey_: юморист ))) я про арифметику этой хрени, где намешаны знаковые, беззнаковые, адреса
[14:36:01] <Kemet> что будет если к указателю - беззнаковое, адрес, прибавить отрицательный int ? xnj pf [htym ndjhbncz d 'njv rjlt&
[14:36:24] <Kemet> TRUE: не, просто битмап
[15:03:09] <_valexey_> Указатель - это указатель. Это не адрес :-)
[15:04:19] <_valexey_> int* a = ...; a = a+10;
[15:05:00] <_valexey_> Теперь a указывает не на 10 байт дальше, а на sizeof(int)*10 байт дальше
[15:05:28] <_valexey_> Можно и минусовать
[15:05:32] <_valexey_> Нет проблем
[15:06:56] <Kemet> ну по-сути, в указателе это и есть адрес,  прибавть константу понятно, что будет если прибавить  отрицательное число
[15:08:10] <_valexey_> Я к тому, что ты не адрес прибавляешь, а сдвигаешь указатель на энное число элементов данного типа всегда
[15:08:20] <_valexey_> Сдвигать можно в обе стороны
[15:08:40] <_valexey_> Где тут беззнаковое - я хз :-)
[15:12:09] <Kemet> int stride;
uint height;
U8* fStart, fBuf;
fStart = fBuf - int(height - 1) * stride;
}
[15:14:15] <Kemet> int(height -1 ) * stride  -- это колво элементов типа U8 на которые нужно сдвинуть, но т.к. Stride отрицательноре, то в итоге мы имеет отрицательное число, так?
[15:16:47] <_valexey_> Да. Например
[15:17:22] <_valexey_> При этом как бы int(height-1) тоже может быть отрицательным
[15:17:36] <_valexey_> В плохих случаях :-)
[15:18:14] <Kemet> ну а там два минуса получается , в итоге плюс же
[15:19:40] <TRUE> указатель - это адрес.
[15:19:57] <Kemet> ниже простотесть для случая когда stride положительное и там просто сложение
[15:20:10] <_valexey_> Аналогично в терминах массивов:
fStart = &fBuf[-int(height - 1) * stride];
[15:21:02] <Kemet> _valexey_: и если страйд отрицательное, то индекс получится положиительный же
[15:21:06] <_valexey_> TRUE: операции с ним не как с числом обычным.   
[15:21:16] <Kemet> это типа чтобы abs(stride) не делать чтоли?
[15:21:23] <_valexey_> Kemet: и? Где противоречие?
[15:22:03] <TRUE> это в сях каких-то такая странность.
[15:22:08] <TRUE> а если дезасемблировать a = a+10;, то там тоже 10 добавляться будет или это только в сях такая "абстракция"
[15:22:12] <_valexey_> Мне надо логику прикладную понять, тогда скажу
[15:22:35] <_valexey_> TRUE: мы про си и говорим
[15:23:14] <TRUE> ну и что, что вы про си говорите? Указатель - это адрес.
[15:23:15] <_valexey_> "<TRUE> а если дезасемблировать a = a+10;, то там тоже 10 добавляться будет или это только в сях такая "абстракция"" - это на каком языке выражение? Типы какие?
[15:23:32] <TRUE> то, что си как-то странно работает - это общеизвестный факт.
[15:23:33] <Kemet> _valexey_: ниже есть вариант для страйда положительный, там ьа же формула, поросто + стоит, ну то есть, оно всегда смещается в большую сторону получается не зависимо от того + - у страда
[15:23:52] <_valexey_> В си - указатель, по совокупности операций, это не простое число/адрес.
[15:24:42] <TRUE> _valexey_> "а если дезасемблировать a = a+10" - это на каком языке выражение? Типы какие?
это твой код несколькими строчками выше.
[15:25:00] <Kemet> ну то есть по сути можно было сделать общую формуду просто с abs(stride) же
[15:25:11] <_valexey_> Kemet: мне нужно увидеть полный код и понять область возможных значений height
[15:25:19] <TRUE> в си помимо a = a+10 есть ещё ++, += и т.д.
[15:25:49] <Kemet> _valexey_: ограничений явных нет - просто размер битмапа
[15:25:56] <_valexey_> TRUE: при дезасме на платформе где инт это 4 байта, увидишь смешение на 40 байт
[15:26:40] <_valexey_> Ну, значит height не нуль. Это гут
[15:28:01] <_valexey_> Значит да. Есть нюанс в сях
[15:28:39] <_valexey_> Если мы про си говорим, а не плюсы, то там abs в либе стандартной он для плавающей точки только
[15:29:00] <_valexey_> Поэтому либо свою писать, либо просто иф вставить
[15:29:32] <_valexey_> А, или вру
[15:29:55] <TRUE> в си есть сокращение вида +=. а есть сокращение вида a = a+10. Это всего лишь сокращение. Если изменить значение указателя таким образом (увеличить на десять) и скопировать результат в, скажем, переменную из другой функции, а потом обратиться по указателю и в другой функции воспользоваться переданным числом как адресом, то результат чтения будет одинаковым.
[15:30:27] <_valexey_> И? Ничему это не противоречит.
[15:30:50] <_valexey_> a+=10 не на 10 байт сдвинет указатель
[15:30:54] <TRUE> указатель - это адрес.
[15:31:22] <TRUE> или я не понял фразу "Указатель - это указатель. Это не адрес"
[15:31:55] <_valexey_> Указатель это не тип unsigned int где лежит адрес
[15:32:10] <_valexey_> Операции у него другие, не как у инта.
[15:33:09] <TRUE> Как по мне, так различие в его операциях как различия между i += 1 и i = i + 1
[15:33:52] <_valexey_> Нет
[15:33:56] <TRUE> И вообще, я не рассматриваю указатель как тип.
[15:34:07] <_valexey_> Ну, бывает :-)
[15:34:25] <_valexey_> Тут уж я ничего поделать не смогу.
[15:37:14] <TRUE> abs для целого числа - это три инструкции: условный переход по флагу (если число положительное), xor c нулём, inc. Неужели этого нет в стандартной библиотеке?
[15:38:05] <_valexey_> Вроде есть. Но может не везде.
[15:39:09] <_valexey_> Какая разница сколько там инструкций будет для твоей любимой платформы? Это никак не влияет на то, есть это в стандартной либе, или нет :-)
[15:39:17] <_valexey_> Хоть 3 хоть триста.
[15:40:01] <Kemet> TRUE: вот в А2 в матлибе нет тангенса и всё тут
[15:41:03] <TRUE> ну раз уж они взялись за математику, то почему такую простую вещь не добавить? Тангенс всяко сложнее. Там и компенсацию ошибок нужно добавлять.
[15:41:55] <Kemet> если че, это кот на цпп. так что есть abs в сях, нет его, - пох
[15:43:54] <TRUE> кстати, кот собственно чего это?
[15:44:12] <TRUE> что программулина должна была делать?
[15:45:07] <Kemet> да просто буфер приаттачить