Arithmetic operators perform operations of change-sign (negate), don't-change-sign, logical AND logical OR, add, subtract, multiply and divide. Note that a value or an expression may fall between two of these operators, either of which could take it as its left or right argument, as in
a + b * c.
In such cases three rules apply:
1. * and / bind to their neighbors more strongly than + and −. Thus the above expression is taken as
a + (b * c)
2. + and − bind more strongly than &&, which in turn is stronger than ||:
a && b - c || d
(a && (b - c)) || d
3. When both operators bind equally strongly, the operations are done left to right:
a - b - c i
(a - b) - c
Parentheses may be used as above to force particular groupings.
The operator % returns the value of a reduced by b, so that the result, in absolute value, is that of the absolute value of b, by repeated subtraction. This is the same as modulus function in integers. New in Csound version 3.50.
Here is an example of the % operator. It uses the files modulus.orc and modulus.sco.
Example 15-1. Example of the % operator.
/* modulus.orc */
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
; Instrument #1.
instr 1
i1 = 5 % 3
print i1
endin
/* modulus.orc */
/* modulus.sco */
; Play Instrument #1 for one second.
i 1 0 1
e
/* modulus.sco */
instr 1: i1 = 2.000