请解释以下代码的执行过程!(50分)

  • 主题发起人 主题发起人 lqquan34168
  • 开始时间 开始时间
L

lqquan34168

Unregistered / Unconfirmed
GUEST, unregistred user!
#include<stdio.h>
void main()
{
int n = 0;
while(n<10)
{
printf("%d/n%d/n",n-=1,n+=2);
n++;
}
}
以上代码运行后是:
1
2
3
4
5
6
7
8
9
10
我不明白的是printf("%d/n%d/n",n-=1,n+=2)这句,它的运算优先级是怎么的。从左到右还是从右到左?
 
格式化输出并且换行显示。
 
从这个结果看,应该是从右向左啊。
比如第一此循环:
相当于调用:
printf("%d/n%d/n",1,2);
所以必然是先加后减
 
c语言习惯从右向左,当然也要看哪个版本的c,turbo就是如此
 
这不是运算优先级的问题,而是函数调用传参的顺序,C/C++的传参顺序为从右到左,除非你要求了其它的调用约定
 
都有结果了还不好解释?
 
n-=1相当于n=n-1,
n+=2相当于n=n+2
 
先算n+=2,n=2
在算n-=1,n=1
输出:
1
2
 
printf里, 从左到右 运算 。
不过其实都和编译器有关的。
 
my god ,一边看电影一边回答问题,竟然搞错了。从右到左运算。
 
printf里, 从右到左运算,从左到右输出。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
I
回复
0
查看
516
import
I
I
回复
0
查看
1K
import
I
后退
顶部