如何解释这些预增量运算符?
预增量运算符具有从右到左的关联性,所以最右边的i
将被递增或所有的i
's 将被递增一次?
main()
{
int i=3,j;
j=++i*++i*++i;
printf("%d",j);
}
答案是 216。
如何解释这些预增量运算符?
预增量运算符具有从右到左的关联性,所以最右边的i
将被递增或所有的i
's 将被递增一次?
main()
{
int i=3,j;
j=++i*++i*++i;
printf("%d",j);
}
答案是 216。
根据c11 标准,§6.5 标准。在工作草案 2 中,这样的表达确实是未定义的。
Answer is 150
Is it equal to (++i * ++i) * ++i, first ++i increments i (i=4), second ++i increments i (i=5) but it is the same i so 5*5 = 25. Finally 25 * ++i = 150
++i 在操作之前递增 i。
您的代码相当于:
int i=3,j;
j=(i+1)*(i+2)*(i+3);
i++;i++;i++;
printf("%d",j);
这将输出4*5*6=120