Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Типы, операторы и выражения


Приоритет & & является большим | |, но оба уступают релятивным операторам и операторам равенства, поэтому выражения вроде
i не требуют дополнительных скобок. Но поскольку приоритет! = Преобладает оператор присваивания =, скобки обязательны в случае
(C = getchar ())! = '\ N'

для того, чтобы добиться желаемого результата - сначала, присвоение значения c, а затем, сравнение его с '\ n'.

По определению, номер релятивного или логического выражения равно 1, если соотношение истинно, и 0 - если ложно.

Унарный оператор отрицания! превращает ненулевой операнд на 0 (ноль) и, наоборот, нулевой операнд на 1 (единицу). Распространенным является применением! в конструкциях вроде
if (! valid)
вместо
if (valid == 0)


Трудно обобщить, какая из этих форм является лучшей. Конструкции вроде! Valid легко читаются ("if not valid" - "если не действительное"), но сложные выражения бывает трудно понять.

Упражнение 2-2. Напишите цикл, эквивалентный приведенному выше, но без использования & & или | |.

Преобразование типов

Когда какой оператор имеет операнды разных типов, последние превращаются в общий типа, согласно небольшого набора правил. В общем, автоматическими преобразованиями считаются те, которые вращают "узкий" операнд на "широкий" без потери информации, как, например, при преобразовании целого в число с плавающей точкой в ​​выражении вроде f + i (где i содержит целое, af - число с подвижной точкой). Выражения, которые не имеют смысла, как скажем использования числа типа float в качестве индекса, запрещены. Выражения, в которых возможно потерять информацию, как в случае присвоения длинного типа целого коротком, или присвоение числа с плавающей точкой целом, могут вызвать предупреждение, но не запрещаются.

Тип char - это просто маленькое целое, поэтому этот тип может свободно употребляться в арифметических операциях. Это обеспечивает существенной гибкостью в некоторых случаях преобразования символов. Примером может служить упрощенная этим наивным воплощением, функция atoi, вращающего цепочка цифр в их числовой эквивалент.
/ * Atoi: превращает s на целое * /
int atoi (char s [])
{
int i, n;

n = 0;
for (i = 0; s [i]> = '0 '& & s [i] <= '9'; + + i)
n = 10 * n + (s [i] - '0 ');

return n;
}

Как мы уже упоминали это в Разделе 1, выражение
s [i] - '0 '
возвращает числовое значение символа, которое сохраняется в s [i], поскольку значение '0 ', '1' и т.д., образуют непрерывную возрастающую последовательность.


Другие статьи по теме:

- Внешние переменные и область действия
- Введение в c++
- Типы, операторы и выражения
- Функции и структура программ
- Символьные массивы


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами