建议在命令行输入texdoc tikz找到有关的符号的详细说明

(point A) -| (point B)指的是从A出发先水平再垂直方向连接坐标点B (point A) |- (point B)指的是从A出发先垂直再水平方向连接坐标点B
这里的point可以是坐标形式 (2,4) 也可以是坐标点的名称 (S) 因为你前面已经定义了 \coordinate (S) at (2,2);
首先看你的第一个MWE:预定义了坐标点S(2,2)
\draw[red] (0,0) -- (0,0)-| (S);
\draw[blue] (0,0) -- (0,0) |- (S);指的是从(0,0)出发,画红色直线到点(0,0),然后从(0,0)出发,先水平再垂直到(S),在脑海中想象,从(0,0)到(2,2)理应先向右再向上.同理,第二行代码从(0,0)画蓝色直线到点(0,0),之后先向上再向右,实际上符号|-以及-|是很形象和直观的.
P.S. 因此上面的代码中(0,0) -- (0,0)并无实际意义,可删去--(0,0).
接下来看第二个MWE,其实是稍微有点tricky的,看下面的例子.
诚如lshort中所言,此时指的是垂足模式
(0,0 -| S) 指 横坐标 为 S的横坐标_, 纵坐标为 _0 的点
(0,0 |- S) 指 纵坐标 为 S的纵坐标_,横坐标为 _0 的点
于是不难想象你得到的两条线.
但是上述表述诚如你所言,左边是一个坐标,右边是一个点,并不是规范的path (PointA) <curve-to> (PointB)表述形式,不建议使用.
关于显示坐标的问题,我不觉得上述的\path想象坐标是很困难的事情,你可以通过\node at (<point>) {$text$}来标注位置,不一定一定需要获得其坐标.
另一方面也可以使用pgfplots宏包提供的\getlastxy{\x}{\y}来获得当前坐标点的命令并保存到\x和\y中,再使用\node输出,但是这样很繁琐,不如直接使用\node输出.















问 `-|`运算符到底什么作用?