调换顺序不一样,为什么?

来源:百度知道 编辑:UC知道 时间:2024/05/09 17:08:05
程序1:
#include<stdio.h>
main()
{
int a, b, c;
printf("Please enter a number for \"a\":");
scanf("%d", &a);
c=a;
printf("if \"2+--a\" \n");
printf("%d,%d\n", 2+--a, a);
printf("if \"2+a--\"\n");
printf("%d,%d\n", 2+c--, c);
while (1);
return 0;
}

程序2:
#include<stdio.h>
main()
{
int a, b, c;
printf("Please enter a number for \"a\":");
scanf("%d", &a);
c=a;
printf("if \"2+--a\" \n");
printf("%d,%d\n", a, 2+--a);
printf("if \"2+a--\"\n");
printf("%d,%d\n", c, 2+c--);
whil

当然不一样了呀,因为有自减操作顺序不一样呀!
printf("%d,%d\n", 2+--a, a); 这个输出有两个表达式,想这种一个语句有多个表达式,是从右向左运算!比如你输入的a值为:23,取a的值为23,从右往左得:a=23,2+--a=24(a先做--运算后+2)

printf("%d,%d\n", 2+c--, c); 这个与上面相似,取c的值为23,从右往左得:c=23,2+c--=25(先取c的值运算+2后c再本身--)

printf("%d,%d\n", a, 2+--a); 取a的值为23,从右往左得:先做--a得:2+--a=24,a=22

printf("%d,%d\n", c, 2+c--); 取c的值为23,从右往左可得:2+c--=25,c=23

是不是那样你试试!!

printf("%d,%d\n", 2+--a, a);
printf("%d,%d\n", a, 2+--a);
--的执行次序不一样,结果不一样啊