Программирование >>  Процедурные приложения 

1 ... 20 21 22 [ 23 ] 24 25 26 ... 150


Приоритеты выполнения операторов

Есть одно справедливое утверждение: Вы не сможете называть себя профессиональным программистом на C/C++ до тех пор, пока не прекратите мыслить на любых других языках и переводить свои мысли на C/C++ . Вы можете разбираться в языках COBOL, FORTRAN, Pascal или PL/I и, зная хотя бы один из этих языков, заставить себя изучить другие языки из этого списка, чтобы успешно программировать на любом из них. Но такой подход может не сработать в случае изучения языков С и C++. Дело в том, что они достаточно сильно отличаются от других языков как по используемым средствам программирования, так и по уникальной логике поиска решений. Если вы не измените свой стиль мышления при написании программ, то не сможете реализовать все возможности и преимущества C/C++. И, что хуже, вы даже не сможете разобраться в логике программ, написанных настоящими специалистами. Техника написания программ на языках C/C++ изобилует таким количеством нюансов, что беглого взгляда на программу достаточно, чтобы оценить профессиональный уровень программиста!

С этой главы мы начнем детальное изучение структуры языков C/C++. Прежде всего следует познакомиться со стандартными типами данных и операторами, с помощью которых можно манипулировать данными.

Идентификаторы

Идентификаторами называются имена, присваиваемые переменным, константам, типам данных и функциям, используемым в программах. После описания идентификатора можно ссылаться на обозначаемую им сущность в любом месте программы.

Идентификатор представляет собой последовательность символов произвольной длины, содержащую буквы, цифры и символы подчеркивания, но начинающуюся обязательно с буквы или символа подчеркивания. Компилятор распознает только первые 31 символ. (Учтите, что другие программы, принимающее данные от компилятора, например компоновщик, могут распознавать последовательности даже еще меньшей длины.)

Языки С и C++ чувствительны к регистру букв. Другими словами, компилятор распознает прописные и строчные буквы как разные символы. Так, переменные NAME LENGTH и Name Length будут рассматриваться как два разных идентификатора, представляющих различные ячейки памяти. То есть вы можете создавать идентификаторы, одинаково читаемые, но отличающиеся написанием одной или нескольких букв.

Использование как прописных, так и строчных букв в идентификаторах позволяет сделать программный код более читабельным. Например, идентификаторы, которые объявлены в файлах заголовков, включаемых в программу с помощью директив #include, часто записывают прописными буквами, чтобы они бросались в глаза. В результате, где бы вы ни встретили идентификаторы, записанные прописными буквами, сразу станет ясно, где они описаны.

Хотя допускается использование символа подчеркивания в начале имени идентификатора, мы не рекомендуем так поступать, поскольку данный способ записи применяется в именах встроенных системных подпрограмм и переменных. Совпадение имени идентификатора с зарезервированным именем вызовет конфликт в работе программы. Два символа подчеркивания ( ) в начале имени идентификатора применяются в стандартных библиотеках языка C++.

Среди программистов на С принято негласное соглашение начинать любое имя с префикса типа данных этого идентификатора. Например, все целочисленные идентификаторы должны начинаться буквой i (integer), идентификаторы с плавающей запятой - буквой f (float), строки, завершающиеся нулевым символом, - буквами sz (stringzero), указатели - буквой р (pointer) и т. д. Зная об этих соглашениях, вы, бросив лишь беглый взгляд на текст программы, сможете сразу определить не только идентификаторы, используемые в этой программе, но и их типы данных. Это существенно упрощает восприятие программных текстов.

Ниже показаны примеры идентификаторов:

itotal frangel szfirst name Ifrequency



imax iMax

iMAX

NULL EOF

Попробуйте определить, почему следующие имена идентификаторов недопустимы:

lst year

#social security Not Done!

Первое имя недопустимо, поскольку начинается с цифры. Второе имя начинается с символа #, а третье - содержит недопустимый символ в конце имени. Посмотрите теперь на следующие идентификаторы и попробуйте определить, допустимы ли они:

oo ooo

Как это ни покажется странным, все четыре имени допустимы. В первых трех используется буква о в верхнем регистре. Поскольку длина идентификаторов разная, никаких конфликтов не происходит. Имя четвертого идентификатора состоит из пяти символов подчеркивания ( ). Но достаточно ли содержательны эти имена? Определенно нет, хотя они вполне допустимы. Таким образом, программист должен позаботиться о том, чтобы все имена функций, констант, переменных и другие идентификаторы несли какой-то смысл.

Обратите также внимание, что, поскольку строчные и прописные буквы различимы, следующие три идентификатора уникальны:

MAX RATIO max ratio Max Ratio

Чувствительность компилятора языка С к регистру букв может вызвать головную боль у начинающих программистов. Например, если вместо printf () в программе будет записано Printf(),то компилятор выдаст сообщение об ошибке вида unknown identifier (неизвестный идентификатор). На языке Pascal можно использовать любое написание имен, например: writeln, WRITELN или writeLn.

Впрочем, вы быстро научитесь отличать неправильную запись вызовов функций, а вот сможете ли вы разобраться, где ошибка в этой строке:

printf( %D ,integer value);

Предположив, что переменная integer value записана правильно, вы можете не заподозрить ошибки. Тем не менее, ошибка есть. Формат вывода может задаваться в языке С только оператором %d, но не %D.

И последнее замечание касательно идентификаторов: имя идентификатора не должно совпадать (с учетом регистра) с именем ключевого слова.

Ключевые слова

Ключевые слова являются встроенными идентификаторами, каждому из которых соответствует определенное действие. Изменить назначение ключевого слова нельзя. (С помощью директивы препроцессора #define можно создать псевдоним ключевого слова, который будет дублировать его действия, возможно, с некоторыми изменениями.) Помните, что имена идентификаторов, создаваемых в программе, не могут совпадать с ключевыми словами языков C/C++ (табл. 5.1).

Таблица 5.1. Ключевые слова языков С/С++ (начинающиеся с символов подчеркивания специфичны для [[компилятора Microsoft)

asm lelse Imain [struct



assume

enum

multiple inheritance

switch

auto

except

single inheritance

template

based

explicit

virtual inheritance

this

bool

extern

mutable

thread

break

false

naked

throw

case

fastcall

namespace

true

catch

finally

cdecl

float

noreturn

try

char

operator

typedef

class

friend

private

typeid

const

goto

protected

typename

const cast

public

union

continue

nline

register

unsigned

declspec

nline

reinterpret cast

using

default

return

uuid

delete

short

uuidof

dllexport

int!6

signed

virtual

dll import

int32

sizeof

void

int64

static

volatile

double

eave

static cast

while

dynamic cast

stdcall

wmain

Стандартные типы данных

Все программы обрабатывают какую-то информацию. В языках C/C++ данные представляются одним из восьми базовых типов: char (текстовые данные), int (целые числа), float (числа с плавающей запятой одинарной точности), double (числа с плавающей запятой двойной точности), void (пустые значения), bool(логические значения), перечисления и указатели. Остановимся на каждом из типов данных.

Текст (тип данных char) представляет собой последовательность символов, таких как a, Z, ? иЗ,которые могут быть разделены пробелами. Обычно каждый символ занимает 8 бит, или один байт, с диапазоном значений от 0 до 255.

Целые числа (тип данных int) находятся в диапазоне от -32768 до 32767 и занимают 16 бит, т.е. два байта, или одно слово. В Windows 98 и WindowsNTиспользуются 32-разрядные целые, что позволяет расширить диапазон их значений от -2147483648 до

2147483647.



1 ... 20 21 22 [ 23 ] 24 25 26 ... 150

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика