能力值:
(RANK:300 )
|
-
-
2 楼
我初学 C++,我试答
是不是因为 f( ) 和 g( ) 会改变 a 的值 ?
像 void f( int &a ) 和 void g( int &a )
|
能力值:
( LV12,RANK:210 )
|
-
-
3 楼
楼上的正解,还有一种情况是重载了"+"号的时候
|
能力值:
(RANK:10 )
|
-
-
4 楼
刚在云风的maillist里面也看见这个题目
感觉考研出这种题目很怪异,太偏了,呵呵
|
能力值:
( LV12,RANK:650 )
|
-
-
5 楼
还有一种情况是f(a)和g(a)的返回值是字符串的时候,不过这也可以算是重载了加号吧,呵呵
|
能力值:
( LV9,RANK:810 )
|
-
-
6 楼
f(a),g(a)不满足交换律的时候
|
能力值:
( LV12,RANK:210 )
|
-
-
7 楼
越说越怪异了
1.f( ) 和 g( ) 会改变 a 的值
2.重载了"+"号
这两个答案还算合理
3.重载了"()"的时候
钻牛角尖...
4.f(a),g(a)不满足交换律的时候
无语ing...
再看下面三个:
5.题目中的C++不是标准C++的时候
6.当你的电脑出了问题的时候
7.当你看花眼的时候
吐血ing...纯恶搞了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
>>简答:在C++中,什么情况下f(a)+g(a)的值不等于g(a)+f(a)的值.
int f(int &a)
{
a += 1 ;
return a ;
}
int g(int a)
{
return a ;
}
int a = 0 ;
此时( f(a) == g(a) ) ;
int a = 0 ;
而 ( g(a) != f(a) ) ;
|
能力值:
( LV12,RANK:660 )
|
-
-
9 楼
想不出为何要考这种题?
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
感觉这道题并不偏,而且出的很好.
我见过另一个很好的题是"使用C语言且不使用临时变量交换两个整数变量的值".
|
能力值:
( LV12,RANK:210 )
|
-
-
11 楼
10楼的问题只要用
a ^= b ^= a ^= b;
就可以了
考考大家,如何不用逻辑运算符来完成这个问题?
答案1:(两个式子,比较整洁,而且很对称)
a += b -= a += b;
b = -b;
答案2(一个式子,有点乱,方法和答案1相同):
a -= (b = (a += b) - b);
不过就我个人来看,这类题仍有钻牛角尖之嫌
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
最初由 thebutterfly 发布 10楼的问题只要用 a ^= b ^= a ^= b; 就可以了
我也想出一个易于理解的方法(也适用于浮点数):
a-=b=(a+=b)-b;
|
能力值:
( LV12,RANK:210 )
|
-
-
13 楼
刚编辑完就看到楼主已经把我想的方法发了
把加减对调也是可以的
实际上这个问题如果不用异或不用加减也是可以做的,只要用或 且 非 凑出异或来就可以,凑出加减来也可以
讨论离题了,这个帖子可以锁了
|
能力值:
( LV12,RANK:650 )
|
-
-
14 楼
还有,a里用了++和--的时候
|
能力值:
(RANK:10 )
|
-
-
15 楼
__asm
{
push x
push y
pop x
pop y
}
|
能力值:
( LV4,RANK:50 )
|
-
-
16 楼
最初由 孙行者 发布 __asm { push x push y pop x ........
我早想到有人想内嵌汇编来做,所以我也早就声明"使用C语言".
|
能力值:
( LV9,RANK:770 )
|
-
-
17 楼
最初由 dwing 发布 感觉这道题并不偏,而且出的很好. 我见过另一个很好的题是"使用C语言且不使用临时变量交换两个整数变量的值".
以前上C语言课的时候有这个习题,不过早忘了.
|
能力值:
( LV6,RANK:90 )
|
-
-
18 楼
非线性函数时。
|
能力值:
(RANK:10 )
|
-
-
19 楼
在<<Pascal语言程序设计>>张长海 著 电子工业出版社
这本书的最后一章特地谈到了这个问题,书中把这个问题称做函数副作用。
例有函数:
Function f(u:real):real;
Begin
a := a * 2;
f := 2 * u;
End;
f(x) * a及a * f(x)不同
|
能力值:
( LV12,RANK:530 )
|
-
-
20 楼
C++不会,只会C。。。
|
|
|