若有宏定义#define MOD(x,y) x%y; 执行 int z,a=15; float b=100; z=MOD(b,a) peintf("%d\n",z++); 输出什么;
时间: 2024-02-26 19:55:50 浏览: 44
根据宏定义 `#define MOD(x,y) x%y;`,把 `MOD(b,a)` 展开后得到 `b%a;`。
因为 `b` 的类型是 `float`,`a` 的类型是 `int`,所以在执行 `b%a` 时会先将 `b` 转换为 `int` 类型再做取余运算,即 `100%15`,结果为 `10`。
然后,执行语句 `z=10;`,将 `10` 赋值给变量 `z`。接着执行语句 `printf("%d\n",z++);`,先输出 `10`,然后将 `z` 的值加 `1`,此时 `z` 的值为 `11`。
因此,输出 `10`。
相关问题
若有宏定义#define MOD(x,y) x%y; 执行 int z,a=10; float b=100; z=MOD(b,a) peintf("%d\n",z++); 输出什么;
根据宏定义 `#define MOD(x,y) x%y;`,把 `MOD(b,a)` 展开后得到 `b%a;`。
因为 `b` 的类型是 `float`,`a` 的类型是 `int`,所以在执行 `b%a` 时会先将 `b` 转换为 `int` 类型再做取余运算,即 `100%10`,结果为 `0`。
然后,执行语句 `z=0;`,将 `0` 赋值给变量 `z`。接着执行语句 `printf("%d\n",z++);`,先输出 `0`,然后将 `z` 的值加 `1`,此时 `z` 的值为 `1`。
因此,输出 `0`。
阅读全文