Becomes
│
English (en) │
suomi (fi) │
français (fr) │
русский (ru) │
中文(中国大陆) (zh_CN) │
The character pair :=
, that are a colon and an equal sign back to back, is pronounced as “becomes” and used by Pascal as the assignment operator.
assignment
For valid assignments :=
is surrounded by a single variable identifier on the left hand (possibly doing a variable typecast), and an expression evaluating to the data type the variable is declared as on the right hand.
program assignmentDemo(input, output, stderr);
const
diameter = 6;
var
n: integer;
area: real;
givenName: string;
begin
n := 42;
area := pi() * diameter;
givenName := 'Smith';
n := 1000 - n div 2;
end.
Assignments to variables of a subrange type should be handled with care.
The compiler can only yield out-of-range errors for constant expressions, i. e. not depending on any run-time data.
With {$rangeChecks}
enabled a run-time error can be generated.
program assignmentRange(input, output, stderr);
type
naturalNumber = 1..high(longword);
var
n: naturalNumber;
begin
{$rangechecks on}
n := 1; // is OK
n := -42 + n; // will cause RTE 201
end.
handling of special data types
Where simple data types like integer
s and char
acters are realized as mov
instructions or alike, data types that require initialization and finalization such as ansistring
s or class
es need special care.
The compiler will generate appropriate code copying data for following data types.
You don’t have to iterate over all components copying each element by hand as it is required in other programming languages.
syntax justification
The rationale of using two characters for assignment instead of just one, say the =
sign, is to distinguish between assigning values and comparing for equality.
It’s got its roots in the field of mathematics where a single equal sign is read as an expression, but has no imperative connotation.
In comparison other languages than Pascal allow to write
n = m = x;
The semantics of this line of code varies among every programming language.
For instance, in Fortran and in Basic this line means “Compare the values m
and x
, and if they are equal to each other n
becomes true
, false
otherwise.”
In contrast to that the C programming language will assign m
the value of x
, and subsequently assign the n
the value of m
, so n
and m
both have the value x
.
This sort of code has been a common source of errors, compilers nowadays even emit warnings when encountering multiple assignment in a single line.
In Pascal the code excerpt above is illegal. Non-productive statements are not allowed, i. e. something has to be done.
index specification
In declarations of enumerated data types, :=
can be used to explicitly specify the ordinal value of a member.
See enumeration types § “Indices” for details.
see also
- single assignment, a compiler optimization
single characters |
|
character pairs |
|