- 論壇徽章:
- 11
|
本帖最后由 Susake_ 于 2013-11-10 14:13 編輯
在另外一個(gè)論壇看見一個(gè)題目覺得挺有意思的....
簡(jiǎn)單點(diǎn)說就是
輸入 add(min(1,1000),add(100,99))
輸出 200
我有一個(gè)不用棧操作的想法是直接寫3個(gè)函數(shù)min,max,add函數(shù)如下
- #include <stdio.h>
- int max(int a, int b)
- {
- return a > b ? a : b;
- }
- int min(int a, int b)
- {
- return a > b ? b : a;
- }
- int add(int a, int b)
- {
- return a + b;
- }
- #define p add(min(1,1000),add(100,99))
- int main()
- {
- printf("%d\n", p);
- return 0;
- }
復(fù)制代碼 想是這么想,但是問題就來了....上面的p是存在內(nèi)存區(qū)的常量區(qū),但是我們輸入的字符串確實(shí)存在內(nèi)存區(qū)的棧區(qū)
綜上...提問 如何將內(nèi)存區(qū)非常量區(qū)轉(zhuǎn)化為常量區(qū)? 還是根本不能實(shí)現(xiàn)?
|
|