作者tatsuo769 (fish)
看板TransCSI
标题Re: [问题] 补南部补习班二技模拟考..问题
时间Tue Apr 11 14:32:46 2006
※ 引述《ccpz (OoOoOo)》之铭言:
: ※ 引述《j121780im (Wen)》之铭言:
: : 我算出来答案是3 .
: : 3.若int a=2,b=3 ; 则printf("%d%d%d%d",a++ , --b ; --a ; b++);的输出结果为?
: : 1.2332
: : 2.2323
: : 3.3333
: : 4.1313
: : 5.以上皆非
: : 我算出来是4.
: 这题觉得和 cmopiler 有关
: 因为参数传递是先 push 进 stack,函数中再一个个取出
: 而 stack 最後进的最先出
: 所以在函数中,要和你打的顺序一样的取出顺序
: 就要从最後一个开始 push
: 这样第一次 pop 时才是第一个
: 所以 b++ 先算,再来 --a ...
: 而最後结果是 4 没错
: (这是我用 gcc 跑的结果)
我用DEV-C++跑出来是2222..
所以我认为是5以上皆非
列印顺序先印A在做+1的动作
然後B先-1在印出....接者;符号表这段结束
此时A已经+1变3了,但他先做-1的动作在印出後面又接了一个分号;
在印出B~此时B值为2印完在做+1的动作...
所以我认为应该是2222
以下为我用C++写出来类似上面的问题
#include <iostream>
using namespace std;
int main(){
int a=2;
int b=3;
cout<<a++<<"\n"<<--b<<"\n";
cout<<--a<<"\n";
cout<<b++;
system("pause");
return 0;
}
如有错误麻烦高手帮忙修正~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 192.192.190.169
1F:→ tatsuo769:分号应该是个盲点... 04/11 14:33
2F:→ xsque:分号是打错 04/11 17:12
3F:→ xsque:printf 是从右到左运算的... 04/11 17:12
4F:→ xsque:你把他分开 这样 前後顺序就变了 04/11 17:13
5F:→ tatsuo769:感谢修正....我果然不会C阿><" 04/14 09:33
6F:→ tatsuo769:感谢提供关键..从右往左..感恩..所以答案必为D 04/14 09:35