如何解释这些预增量运算符?
预增量运算符具有从右到左的关联性,因此最右侧i
会递增,或者所有i
都会递增一次?
main()
{
int i=3,j;
j=++i*++i*++i;
printf("%d",j);
}
答案是216。
答案 0 :(得分:0)
根据c11 standard, §6.5 par. 2 of the working draft,这些表达式确实未定义。
答案 1 :(得分:-1)
++ i在操作之前递增i。
您的代码相当于:
int i=3,j;
j=(i+1)*(i+2)*(i+3);
i++;i++;i++;
printf("%d",j);
这将输出 4 * 5 * 6 = 120
答案 2 :(得分:-1)
答案是150
它等于(++ i * ++ i)* ++ i,首先++ i递增i(i = 4),第二个++ i递增i(i = 5)但它是相同的i所以5 * 5 = 25。 最后25 * ++ i = 150