Each TAC instruction has at most three operands and is typically a combination of assignment and a binary operator.
It is also not uncommon that operand names are numbered sequentially since three-address code is typically generated by the compiler.
A refinement of three-address code is A-normal form (ANF).
It is also easier to detect common sub-expressions for shortening the code.
Three-address code may have conditional and unconditional jumps and methods of accessing memory.