#include<stdio.h>
#define SQ(y) ((y)*(y))
int main()
{
int i = 1;
while (i <= 5)
printf("%d\n", SQ(i++));
return 0;
}
uj5u.com熱心網友回復:
求一下程序,最好理論具體一點推導說明的uj5u.com熱心網友回復:
用函式,不要用宏。uj5u.com熱心網友回復:
我 暈uj5u.com熱心網友回復:
研究回字的第五種寫法...uj5u.com熱心網友回復:
我沒明白什么第五寫法uj5u.com熱心網友回復:
孔乙己。。。
uj5u.com熱心網友回復:
你用這個宏,在每一次參考宏的時候,i++都執行了兩次……實在要用宏的話,不要在宏里用類似i++這一類的方式,可以改成
#include<stdio.h>
#define SQ(y) ((y)*(y))
int main()
{
int i = 1;
while (i <= 5)
{
printf("%d\n", SQ(i));
i++;
}
return 0;
}
uj5u.com熱心網友回復:
這是個不好的編程習慣,不要使用宏#defineuj5u.com熱心網友回復:
盡量減少宏的使用,并不是說他不方便,只是他容易出現錯誤比如#define PLUS(a) ((a)+(a)) 然后呼叫的時候用PLUS(a++)沒有命名空間,容易沖突(比如經常沖突MAX, MIN)在預處理期就被處理了,編譯出錯后難以修復。constexpr, typedef/using, inline, enum可以替代絕大部分宏。uj5u.com熱心網友回復:
SQ(i++)宏展開時((i++)*(i++)),所以做一次SQ(i++),i++了兩次, i的值分別就是1,3,5.uj5u.com熱心網友回復:
看到您列舉了好幾種代替define的方法,現在在學typedef,能請您多講講嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56418.html
標籤:基礎類
