C语言的代参宏定义,#define SQ(y) ((y)*(y))....输出应该是2 12 30才对啊??
发布网友
发布时间:2022-07-02 12:00
我来回答
共2个回答
热心网友
时间:2023-10-26 18:47
首先i++是先运算,后加。
对于SQ(i++)来说,其实质是((i++)*(i++))。在后加运算符是在整个运算完成之后,才进行加1操作的。
因此,第一次
首先i=1,1*1 = 1,之后i++=2,再i++=3。
第二次循环
首先3*3 = 9,之后i++=4,再i++=5。
第三次循环
首先5*5 = 25,之后i++=6,再i++=7。
因为i=7,所以退出循环。追问"因此,第一次
首先i=1,1*1 = 1,之后i++=2,再i++=3。",第一个i++ = 1,第二个i++等于2,那么(i++)*(i++)=2才对啊?
追答后加运算符是在整条语句执行完之后,再进行计算的。
所以,会执行完乘法后,再执行两次加法。
热心网友
时间:2023-10-26 18:48
未定义行为,结果视编译器而定追问我如何定义行为才能使”
输出应该是2 12 30“
呢?~求指点啊~~