几个小问题
各位朋友,大家好!请帮我解决这些问题,在下感激不尽!(1) main()
{int a=3;clrscr();
printf("%d,%d",a,a*=a++);}此题结果为:12,12
而:
(2) main()
{int a=3,b;
b=a*=a++;clrscr();
printf("%d,%d",a,b);}此题结果为:10,9
另外:
(3) main()
{int a=3,b; clrscr();
b=a+=a++;
printf("%d,%d",a,b);
}此题结果为:7,7
而:
(4) main()
{int a=3; clrscr();
printf("%d,%d",a,a+=a++);}
此题结果为:7,7
请问:
(1)和(2)为何结果不相同?(3)和(4)结果为何相同?
它们的运算规则不同吗?
请各位朋友不吝赐教!!
----------------解决方案--------------------------------------------------------
[原创]看看原因吧~~!!
Turbo C 以及 MS C 在执行算术运算的时候一般是 自右向左 的~~~~~再看看吧~~!不过第二个程序的结果好象不对哦~~!!!
----------------解决方案--------------------------------------------------------
别着急``看看书慢慢分析就会懂``
----------------解决方案--------------------------------------------------------
不急!~~
好好看!~就可以拉!~
----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{int a=3,b;
b=a*=a++;
printf("%d,%d",a,b);}
和#include<stdio.h>
main()
{int a=3;
printf("%d,%d",a,a*=a++);}
结果都是10,9啊 怎么搞的 我用c-free运行的
没什么不同的啊
a*=a++ 好象是自左向右运行的吧 就是a=3*3 然后++
#include<stdio.h>
main()
{int a=3,b=0;
b=a+=a++;
printf("%d,%d",a,b); }
这个程序该是 7,6吧
因为a+=a++ 就是 a=3+3 然后运行++ a就变成7了 但是a++的值还是6就付值给b了 所以b=6
#include<stdio.h>
main()
{int a=3;
printf("%d,%d",a,a+=a++);}
这个程序结果也是一样的啊 7,6
我不知道是不是c-free的运行结果不一样哦
我刚运行了下 的确是那样子
----------------解决方案--------------------------------------------------------
各位:
我是在TC2.0上运行的,结果没问题。我想知道的是为何结果跟我们预计的不一样,有何运算规则?
----------------解决方案--------------------------------------------------------
编译器不一样,结果是不一样的,这个是编译器中的编译机的文法差异造成的,不用理会这些,再说上面列出的那些例子在实际当中是不允许写的,那都不是良好的代码格式,所以不用太怎么在意,不过为了学懂C,适当的看看是可以的
----------------解决方案--------------------------------------------------------
运算顺序是与各编辑器有关!
如果你想要你预计的结果
那就不要打一个变量的自增与自减和该变量放同一个输出语句中
如
1) main()
{int a=3;clrscr();
printf("%d,%d",a,a*=a++);}此题结果为:12,12
而:
(2) main()
{int a=3,b;
b=a*=a++;clrscr();
printf("%d,%d",a,b);}此题结果为:10,9
像(2)那样就不管编辑器如何运算,但结果都只有一个,就是10和9
----------------解决方案--------------------------------------------------------
其他三个可以理解,却怎么也搞不懂第二个程序的结果,觉得不可思议!
版主能不能进来解释下?
----------------解决方案--------------------------------------------------------