intp для ссылки на следующий
Например:
int *intp;
intp += sizeof(int);
не будет работать так, как вы задумали (предполагая увеличить
intp для ссылки на следующий элемент массива). Фактически, intp
продвигается на два элемента массива. При сложении или при вычи-
тании из указателя Си принимает во внимание размер элемента, на
который ссылается указатель, поэтому все, что нужно сделать для
продвижения указателя на следующий элемент массива - это опера-
ция:
intp++
Не забывайте о расширении по знаку
-----------------------------------------------------------------
Будьте аккуратны при присваивании целых чисел различного
размера:
int i = OXFFFE;
long l;
l = i;
if (l & OX800000000) {
... /* это будет выполнено */
}
Один из моментов в Си, который может привести к неприятнос-
тям, состоит в том, что вы не знаете о последствиях. Язык Си поз-
воляет свободно использовать присваивание одной целочисленной
скалярной величины (char, int и т.д.) другой, знак (положительный
TDeb 3.0 #2-3 = 128 =
или отрицательный) сохраняется в переменной большего размера,
причем бит знака (старший бит) распространяется на всю старшую
часть большего скалярного значения. Например, значение типа int -
2 (Oxfffe) становится значением типа long -2 (oxfffffffe).
TDeb 3.0 #2-3 = 129 =
Помните об усечении
-----------------------------------------------------------------
Данный пример противоположен примеру предыдущего раздела:
int i = 1;
long l = OX10000;
l = i;
if (i > 0) {
... /* это не будет выполнено */