邪恶X86
19:55:39
++和——是带有副作用的运算符。建议读者不要在一个表达式中对同一变量多次使用这样的运算符,可能会发生意想不到的结果。如i的值为4,对表达式
(i++)+(i++)
可能认为它的值为 9(+5)。然而在 TURBO C和MS C系统中,它的值为8.而表达式
(++i)+(++i)
的值为12.这是因为这些系统在处理 i++时,先使用 i的原值计算整个表达式,然后再让i连续两次自增;处理++i时,在计算表达式值之前,先对 i执行两次自增,然后才计算表达式。放前一个表达式的值为8,后一个表达式的值为12.
因+与++(-与——类似)是两个不同运算符,对于类似表达式i+++j会有不同的理解:(i++)+ j或i+(++j)。 C编译的处理方法是自左至右让尽可能多的字符组成一个合法的句法单位(如标识符、数字、运算符等)。因此,i+++j被解释成(i++)+j,而不是i+(++j)。
增1(++)和减1(——)运算符的结合方向是自右至左的。
邪恶X86
19:56:34
你那道题在VC中 是先把 j自增了2次 7+7=14 J在自增了1次 14+8=22
这个问题我也想了很久想不明白,所以我问了下高手,嘿嘿,你看看吧