3ac (Three-address code) is an intermediate code used by a compiler to simplify source code into a more machine-like form. Each instruction typically involves at most three addresses (two for operands, one for result), making it a crucial stage for optimization before machine code generation.