Re: [問題] 關於#define的問題
試了一下:
#include <stdio.h>
#define INC_1(z) (++z)
#define INC_2(z) ++z
#define SUM_1(a,b) (a+b)
#define SUM_2(a,b) a+b
void main(){
int x = 1, y = 5;
printf("%d\n", x+INC_1(y));
x = 1, y = 5;
printf("%d\n", x+INC_2(y));
printf("%d\n", SUM_1(1,5)*5);
printf("%d\n", SUM_2(1,5)*5);
}
結果是
7
7
30
26
前兩者是否有加括號,結果都是一樣的,而後兩者則有受影響
請問要如何區別呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.113.163.191
→
10/10 20:09, , 1F
10/10 20:09, 1F
→
10/10 20:10, , 2F
10/10 20:10, 2F
→
10/10 20:11, , 3F
10/10 20:11, 3F
※ 編輯: oberstei 來自: 59.113.163.191 (10/10 20:25)
請問SUM_2沒加括號,結果是1+5*5
那為何INC_2不加括號不會替換成x+++y=(x++)+y
而會先判斷++y?
還是像上面前輩的程式,沒括號也會自動附加一個空格呢?
※ 編輯: oberstei 來自: 59.113.163.191 (10/10 20:44)
※ 編輯: oberstei 來自: 59.113.163.191 (10/10 20:45)
→
10/10 20:51, , 4F
10/10 20:51, 4F
推
10/10 20:54, , 5F
10/10 20:54, 5F
→
10/10 20:57, , 6F
10/10 20:57, 6F
→
10/10 20:58, , 7F
10/10 20:58, 7F
→
10/10 20:58, , 8F
10/10 20:58, 8F
推
10/10 21:08, , 9F
10/10 21:08, 9F
→
10/10 21:09, , 10F
10/10 21:09, 10F
推
10/10 21:14, , 11F
10/10 21:14, 11F
→
10/10 21:15, , 12F
10/10 21:15, 12F
→
10/10 21:15, , 13F
10/10 21:15, 13F
→
10/10 21:19, , 14F
10/10 21:19, 14F
→
10/10 21:19, , 15F
10/10 21:19, 15F
→
10/10 21:21, , 16F
10/10 21:21, 16F
→
10/11 16:10, , 17F
10/11 16:10, 17F
→
10/11 16:10, , 18F
10/11 16:10, 18F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
4
11
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章