Господа, есть вопрос. Полдня потратил на вылавливание косяка в программе.
Есть функция, которая принимает параметр типа unsigned int:
void Func(unsigned int i)
Косяк был в том, что я подставлял туда переменную типа unsigned char, умноженную на некое число. КОгда произведение unsigned char на это число не превышало 256, все было нормально, когда превышало - начинались косяки. Т.Е., не важно какого типа переменная произведения, если один из множителей unsigned char, произведение выше 256 никак не получится.
Нашлось 2 решения. Первое - сделать эту переменную типа unsigned int. Второе - поставить в настройках галочку - "promote char to int".
По последнему пункту вопрос - что все-таки делает эта галка? Преобразуетт char в int по необхоидмости, или же преобразуются все char переменные? Меня беспокоит экономия памяти, вот я и думаю - какое из приведенных решений рациональней - первое или второе?
Спасибо.
|