请编译并运行此 C 代码
#include <stdio.h>
int main()
{
int a[] = {10, 20, 30, 40, 50};
int index = 2;
int i;
a[index++] = index = index + 2;
for(i = 0; i <= 4; i++)
printf("%d\n", a[i]);
}
输出:10 20 4 40 50
现在用Java实现相同的逻辑
class Check
{
public static void main(String[] ar)
{
int a[] = {10, 20, 30, 40, 50};
int index = 2;
a[index++] = index = index + 2;
for(int i = 0; i <= 4; i++)
System.out.println(a[i]);
}
}
输出:10 20 5 40 50
为什么两种语言的输出不同,Java
的输出可理解,但我无法理解C
的输出。
另外,如果我们使用前缀++
运算符,两种语言将得到相同的结果,为什么呢?
c++
标签。 - Ryan Hainingc++
。我仍然认为a[index++] = index = index + 2
在 C、C++ 或 Java(Python?)中都不好用 - 根据评论的赞数,我相信我不是唯一一个这样认为的人 - 或者c++
标签意味着代码可以难以阅读(像 Code Golf 一样吗?)。而且,看看唯一的答案,即使 C 也有点 困惑... - user85421[c++]
语言相关问题可以用“你为什么要写这个?”来回答。顺便说一下,这不是合法的 Python 代码。 - Ryan Haining