关于这种脑残题目的讨论sum = (++i)*(++i)*(++i);
#include<stdio.h>int main()
{
int i = 2,sum;
sum = ++i*++i*++i;
printf("%d\n",sum);
return 0;
}
新手可能会3*3*3,
稍微懂变量和递增符的3*4*5
然后有的编译器会这样5*5*5
但最让我想不到的这题答案是80,有人说是4*4*5
正常没有人会这样写代码。编译器不同应该会有不同的结果。出题人你装什么呢?
++i的优先级大于*
所以++i*++i*++i的运算过程是
i = i + 1 3
i = i + 1 4
tmp1 = i * i 16
i = i + 1 5
sum = tmp1 * i 80
先知道了答案 纯属好奇,根据优先级强行推了一遍 不知道有没有错误。。。 游习 发表于 2020-3-18 17:44
++i的优先级大于*
所以++i*++i*++i的运算过程是
i = i + 1 3
我想说的是有的编译器,会把所有 i 的值都给到最5,我的 vs2017就是这样。当然 ,出题人的编译器肯定不是这样
页:
[1]