Типы данных
Переменные (и поля) принимают числовые или текстовые значения в зависимости от контекста. Например, в присваивании
pop += $3
pop полагается числом, в то время как в присваивании
country = $1
country - это цепочка символов. В выражении
maxpop < $3
тип maxpop зависит от данных, которые содержатся в $3, что определяется во время выполнения программы.
В общем случае, каждая переменная (поле) является потенциально цепочкой символов или числом, либо одновременно и тем и другим. Если значение переменной устанавливается присваиванием
пер = выражение
то ее тип становится равным типу выражения. ("Присваивание" - это также и +=, ++, -= и т.д.) Арифметическое выражение имеет тип число; конкатенация цепочек имеет тип цепочка_символов.
В сравнениях, если оба операнда являются числами, они и сравниваются как числа. В противном случае, операнды, если требуется, преобразуются в цепочки символов и выполняется сравнение этих цепочек.
Следующие трюки позволяют преобразовать тип любого выражения:
выражение + 0
трактуется как число, а
выражение ""
- как цепочка символов. (Последнее выражение - это конкатенация с пустой цепочкой.)