输出以下程序

时间:2013-08-13 12:46:04

标签: c

如何解释这些预增量运算符?
预增量运算符具有从右到左的关联性,因此最右侧i会递增,或者所有i都会递增一次?

main()
 {
    int i=3,j;
    j=++i*++i*++i;
    printf("%d",j);
 }

答案是216。

3 个答案:

答案 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