【发布时间】:2014-08-01 06:02:41
【问题描述】:
我无法理解代码的输出。任何解释请...
#include<stdio.h>
void main()
{
int x=2,y=5;
x*=y+1;
printf("%d",x);
}
输出为 12。但根据我的理解,x*=y+1;是x=x*y+1;,但根据运算符优先级,x*y 应该被评估,然后是adding 1,所以它应该是 10+1=11。但它是 12 - 谁能解释一下吗?
【问题讨论】:
-
您使用哪个编译器?使用 GCC。
-
这是
int main(void),而不是void main()。 -
@Aashu:他使用哪个编译器并不重要。代码行为正确,没有编译器会出错。
-
@KeithThompson:除了在 Windows 上,鉴于
printf()末尾缺少换行符,这可能就是它正在运行的地方。是的,应该是int main(void),但MS 确实允许void main()。 -
这是一个重复的问题;困难在于找到(最好的)副本。
标签: c