Parece mentira que a esta altura, no sepas el significado de 'expresión'.
x = 5
x = (x + 5)
x = ((x + 5) * b)
x = ((x + 5) + (b and 1))
Todo son expresiones, hay una única asignación, pero es la última, previamente debe resolverse cada operación de la expresión, solo entonces se hace la asignación final.
En una función, un parámetro es lo mismo que en una asignación... si el parámetro fuera x, da lo msimo hacer:
x = ((x + 5) + (b and 1))
suma = sumar(20, x)
Que hacer:
suma = Sumar(20, ((x + 5) + (b and 1)))
El segundo parámetro es una expresión, cualquier variable por sí misma también es una expresión...Las formas típicas en que varias constantes se aúnan es porque cada constante típicamente afecta un solo bit (o más)
un sencillo ejemplo con las características d eun texto:
enumeracion FormatoTexto
FORMATO_NEGRITA = 1 // 00000001
FORMATO_INCLINADO = 2 // 00000010
FORMATO_SUBRAYADO = 4 // 00000100
FORMATO_TACHADO = 8 // 00001000
FORMATO_COLOR = 16 // 00010000
// ...
fin enumeracion
string texto = "Lindo pulgoso"
entero lineaX = 23
FormatoTexto ft = FORMATO_NEGRITA or FORMATO_SUBRAYADO // 1 or 4 = 5
Escribir(texto, lineaX, ft)
En este otro ejemplo, esta llamada es prácticamente equivalente a la anterior... vale igualmente no poner variables, sino los valores constantes...
La variación rea a tener en cuenta es tan solo que debe tenerse en cuenta que en caso de que sean parámetros por referencia, se pierden valores que se dieren de vuelta. Y por tanto si se precisan tener de vuelta valores cambiados, deben pasarse variables y no los valores (constantes)...
Escribir("Lindo pulgoso", 23, FORMATO_NEGRITA or FORMATO_SUBRAYADO )