(1)相当于增加了一个括号:a=(3*5,a*4),括号中是一个逗号表达式,求值后表达式的值为12,a的值也为12。
(2)如果括号这样打(a=3*5),(a*4),先计算(a=3*5)值为15,a的值为15,再计算(a*4),值为60,因此逗号表达式的值也为60。
两种运算哪一个对呢?
这还是要从运算符的优先级考虑。我们知道赋值运算符的优先级高于逗号运算符的优先级,当计算了3*5=15后。式子变成a=15,a*4,15左右两边有两个运算符,一个是“,”号,另一个是“=”号,显然优先级高的先运算,由于“=”优先级高于“,”,因此15先赋给a,由此可见正确的算法应当是第二种。
一个逗号表达式又可以与另一个逗号表达式组成一个新的逗号表达式,如
(a=3*5,a*4),a+5
先计算a的值得15(a的值被改变),再计算a*4值为60(a的值没有改变),最后计算a+5值为20。逗号表达式的值也为20。
逗号表达式的一般形式可扩展为:
表达式1,表达式2,表达式3……表达式n
它的值为表达式n的值。
由于逗号表达式的优先级别最低,所以有无括号对表达式的值有着直接的影响,请看下面的例子。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] 下一页
|