這個代碼是#include<stdio.h>
#define SQ(y) ((y)*(y))
int sq(int y)
{
return ((y)*(y));
}
int main()
{
int i=1,j=1;
while(i<=5)
printf("%d\n",SQ(i++));
printf("\n");
while(j<=5)
printf("%d\n",sq(j++))
;
printf("\n");
return 0;
}
為什么SQ 里面是1方3方5方呢
希望有大佬能幫忙解答一下啦
uj5u.com熱心網友回復:

因為SQ(i++)等于
(i++) * (i++)
uj5u.com熱心網友回復:
你的宏定義屬于未定義行為相當于
while (i<=5) {
printf("%d\n", (i++)*(i++)); //宏定義只是展開你的運算式,編譯器不一樣,結果會不一樣,結果是不可知的
}
而函式就不一樣了
sq(j++) 相當于 sq(j), j++; 這樣的逗號運算式,結果是可知的
uj5u.com熱心網友回復:
(i++)*(i++)這里是先進行了乘法運算再進行了自增運算?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/60204.html
標籤:C語言
上一篇:演算法求助,組合并輸出問題
