我有视觉工作室C++和C#和每个编译器相同的代码具有不同的输出虽然都具有相同的优先级和结合表C++对C#运算优先
在C++
int i = 10;
int a = i++ + ++i + i--;
printf("a=%u\n",a);
i = 10;
a = i++ + i;
printf("a=%u\n",a);
int x=2,y=3;
int z=((x++)*(x++))+((++y)*(++y));
printf("x=%u , y=%u , z=%u \n",x,y,z);
输出是
a=33
a=20
x=4 , y=5 , z=29
在C#
int i = 10;
int a = i++ + ++i + i--;
Console.WriteLine("a={0}",a);
i = 10;
a = i++ + i;
Console.WriteLine("a={0}", a);
int x = 2, y = 3;
int z=((x++)*(x++))+((++y)*(++y));
Console.WriteLine("x={0} , y={1} , z={2}",x,y,z);
输出
a=34
a=21
x=4 , y=5 , z=26
在C#中我发现,操作服从优先级表后递增具有更高的优先级是预增,因此它把值则增加 我无法找到任何合理的解释。有谁能解释这个吗?
您的C++代码中存在未定义的行为,因为您多次修改了未被序列化的“i”。什么事情都可能发生。我不知道C#如何处理这个问题。 –