片加什么作用?
“拍”字在中文里是“掌击”的意思,用汉语里的这个概念来解释“+”的作用,应该是最合适的了。 想象一下,在电脑屏幕上划一条线,这条线要把两个对象串联起来,那该线的一侧必须有一个对象,另一侧也必须得有一个对象。否则的话,这条线就毫无意义了。
这就是“+”所要求的两边都有操作数的问题所在——它要确保左边和右边都“有其它”(存在其他运算符)——否则就会出现歧义。比如: (1+0)可以理解为“先算1+0,再求和”——这时第一个1和第二个0对应相加; (1+0)也可以理解为“先求和,结果再给第一个1加上0”——这时第一个1和第二个0对应相减。 为了避免这种歧义,C语言规定:如果一个运算符两侧的操作数都是整数类型、浮点数类型或指针类型,那么它就一定是加法,此时它不能为右结合的,也就是说它是从左到右进行计算的。如果一侧的操作数是字符串,而另一侧是整型或者浮点数,那么这个运算符一定为左结合且不是加法,它是将两个字符串连接起来的操作。
同时因为字符串比较特殊,它要求每个字符串都要包含一个用来标识字符串结束的‘\0’终止字符,所以这个连接操作实际上是将这两个‘\0’之后的部分连接起来,所以这种形式的+被称为‘串并操作’(因为串要先并后串,也就是先拼接,再接“\0”)。