PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   問個基本C的問題 (https://www.pcdvd.com.tw/showthread.php?t=1077289)

@"@ 2015-05-06 03:05 PM

引用:
作者以月為影
m2在比較和輸出的時候各減1一次, 所以輸出1

其他不用解釋了吧

程度很潛不懂

PRINT2 (MAX(m1++,--m2),m1,m2);
為什麼是再減一

aei 2015-05-06 03:08 PM

引用:
作者@"@
程度很潛不懂

PRINT2 (MAX(m1++,--m2),m1,m2);
為什麼是再減一


MAX(m1++,--m2)
代進去後,變成.
((m1++)<(--m2) ?(--m2) : (m1++))

--m2做了兩次.

@"@ 2015-05-06 03:12 PM

引用:
作者aei
MAX(m1++,--m2)
代進去後,變成.
((m1++)<(--m2) ?(--m2) : (m1++))

--m2做了兩次.

感恩 :like:

有你這一寫,我感覺自己很笨 :cry:

A級黑豬肉 2015-05-06 08:16 PM

引用:
作者LVKRMD
後加是要在哪時候加 :D


y = 1;
log(y++);
log(y);
log('------------');
y = 1;
log(++y);
log(y);

會顯示
1
2
------------
2
2

rockindy 2015-05-06 09:15 PM

引用:
作者@"@
再來一題
#define MAX (a,b) (a<b ?b:a)
#define PRINT1(x) printf("%d",x)
#define PRINT2(x,y,z) PRINT1(x),PRINT1(y),PRINT1(z)


int m1=1,m2=3;
PRINT2 (MAX(m1++,--m2),m1,m2);

這個怎樣看 :flash:


不負責推演:

PRINT2 (MAX(m1++,--m2),m1,m2);

PreProcessing:
=> PRINT1(MAX(m1++, --m2)), PRINT1(m1), PRINT1(m2);
=> printf("%d", MAX(m1++, --m2)), PRINT1(m1), PRINT1(m2);
=> printf("%d", m1++ < --m2 ? --m2 : m1++), PRINT1(m1), PRINT1(m2);
=> printf("%d", m1++ < --m2 ? --m2 : m1++), printf("%d", m1), printf("%d", m2);

Executing
=> printf("%d", 1 < 2 ? 1 : 2), printf("%d", 2), printf("%d", 1);
=> 121

rockindy 2015-05-06 09:30 PM

引用:
作者@"@
再來一題
#define MAX (a,b) (a<b ?b:a)
#define PRINT1(x) printf("%d",x)
#define PRINT2(x,y,z) PRINT1(x),PRINT1(y),PRINT1(z)


int m1=1,m2=3;
PRINT2 (MAX(m1++,--m2),m1,m2);

這個怎樣看 :flash:


不負責推演:

PRINT2 (MAX(m1++,--m2),m1,m2);

PreProcessing:
=> PRINT1(MAX(m1++, --m2)), PRINT1(m1), PRINT1(m2);
=> printf("%d", MAX(m1++, --m2)), PRINT1(m1), PRINT1(m2);
=> printf("%d", m1++ < --m2 ? --m2 : m1++), PRINT1(m1), PRINT1(m2);
=> printf("%d", m1++ < --m2 ? --m2 : m1++), printf("%d", m1), printf("%d", m2);

Executing
=> [m1=1, m2=3] printf("%d", 1 < 2 ? --m2 : m1++), printf("%d", m1), printf("%d", m2);
=> [m1=2, m2=2] printf("%d", --m2), printf("%d", m1), printf("%d", m2);
=> [m1=2, m2=1] printf("%d", 1), printf("%d", 2), printf("%d", 1);
=> 121

silent 2015-05-06 09:31 PM

引用:
作者X19-TypeIII
x+=y+++--z 應該要這樣拆~

z = z - 1
x = x + (y + z)
y = y + 1

言簡意賅∼ :ase

yanlin 2015-05-06 10:01 PM

應該是212? :confused:


所有的時間均為GMT +8。 現在的時間是05:32 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。