#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++));#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++)); printf("%d/n",c);} 答案是31,求详解.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 06:28:11
![#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++));#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++)); printf(](/uploads/image/z/12328064-8-4.jpg?t=%23define+F%28x%2Cy%29x%2A%28y%29+void+main%28%29+%7Bint+a%3D3%2Cb%3D4%2Cc%3B+c%3DF%28a%2Bb%2C%28a%2B%2B%29%2B%28b%2B%2B%29%29%3B%23define+F%28x%2Cy%29x%2A%28y%29+void+main%28%29+%7Bint+a%3D3%2Cb%3D4%2Cc%3B+c%3DF%28a%2Bb%2C%28a%2B%2B%29%2B%28b%2B%2B%29%29%3B+printf%28%22%25d%2Fn%22%2Cc%29%3B%7D+%E7%AD%94%E6%A1%88%E6%98%AF31%2C%E6%B1%82%E8%AF%A6%E8%A7%A3.)
#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++));#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++)); printf("%d/n",c);} 答案是31,求详解.
#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++));
#define F(x,y)x*(y)
void main()
{int a=3,b=4,c;
c=F(a+b,(a++)+(b++));
printf("%d/n",c);}
答案是31,求详解.
#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++));#define F(x,y)x*(y) void main() {int a=3,b=4,c; c=F(a+b,(a++)+(b++)); printf("%d/n",c);} 答案是31,求详解.
宏定义这里需要指出的是,会出现变量的越界问题.
为了避免越界问题,通常在定义的时候要求#define F(x,y) (x)*(y) 否则会出现变量的越界
按照已有的宏定义,函数中
c=F(a+b,(a++)+(b++)) = a+b *(,(a++)+(b++))----------------------(☆)
分析(☆)执行过程:
1、宏定义执行按照次序有
3+4 * (a++)+(b++)
=3+4*(3+4)=31
2、 执行完括号部分 a自加变成4,b自加变成5
3、 因此答案为31