The K (
calc-keep-args) command acts like a prefix for
the following command. It prevents that command from removing its
arguments from the stack. For example, after 2 <RET> 3 +,
the stack contains the sole number 5, but after 2 <RET> 3 K +,
the stack contains the arguments and the result: ‘2 3 5’.
With the exception of keyboard macros, this works for all commands that take arguments off the stack. (To avoid potentially unpleasant behavior, a K prefix before a keyboard macro will be ignored. A K prefix called within the keyboard macro will still take effect.) As another example, K a s simplifies a formula, pushing the simplified version of the formula onto the stack after the original formula (rather than replacing the original formula). Note that you could get the same effect by typing <RET> a s, copying the formula and then simplifying the copy. One difference is that for a very large formula the time taken to format the intermediate copy in <RET> a s could be noticeable; K a s would avoid this extra work.
Even stack manipulation commands are affected. <TAB> works by popping two values and pushing them back in the opposite order, so 2 <RET> 3 K <TAB> produces ‘2 3 3 2’.
A few Calc commands provide other ways of doing the same thing. For example, ' sin($) replaces the number on the stack with its sine using algebraic entry; to push the sine and keep the original argument you could use either ' sin($1) or K ' sin($). See Algebraic Entry. Also, the s s command is effectively the same as K s t. See Storing Variables.
If you execute a command and then decide you really wanted to keep
the argument, you can press M-<RET> (
This command pushes the last arguments that were popped by any command
onto the stack. Note that the order of things on the stack will be
different than with K: 2 <RET> 3 + M-<RET> leaves
‘5 2 3’ on the stack instead of ‘2 3 5’. See Undo.