宏定义中的 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。

#include stdioh#define SQRX XXvoid main	int a = 16k = 2 m = 1;	a = SQRk+m SQRk+m;	printfdna;输出的为什么是2

原文地址: https://www.cveoy.top/t/topic/bZF7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录