#include stdioh#define SQRX XXvoid main int a = 16k = 2 m = 1; a = SQRk+m SQRk+m; printfdna;输出的为什么是2
宏定义中的 SQR(X) 展开后为 XX,因此 a /= SQR(k+m) / SQR(k+m) 实际上是 a /= (k+m)(k+m) / (k+m)*(k+m)。根据运算符优先级,先计算乘法,再计算除法,所以可以简化为 a /= 1,即 a = a / 1,因此 a 的值不变,仍为 16。因此,输出应该是 16 而不是 2。
原文地址: https://www.cveoy.top/t/topic/bZF7 著作权归作者所有。请勿转载和采集!