定义一个带参数的宏,使两个参数的值交换,并写出两个数作为使用宏时的实参,输出已交换后的两个值。

时间:2022-10-19 23:20:14
我不知道下面的程序哪里错了,总是a=16,b倒是和a交换了:

#include <stdio.h>
#define swap(a,b)t=a;a=b;b=t
main()
{
    int a,b,t;
    printf("please input integer:\n");
    scanf("%d,%d",&a,&b);
    swap(a,b);
    printf("now a=%d,b=%d",a,b);
}

11 个解决方案

#1


注意你的输入格式啊 应该输入 16,25再回车结束就可以了

#2


程序应该没问题,我在gcc下面是了一下可以交换的。

#3


换个宏试试看!!

#define swap(a,b) a ^= b; b ^= a; a ^= b

#4


scanf("%d %d",&a,&b);//参数不对

#5


你是不是键盘输入时,格式有问题啊???
在swap前输出一下a,b的值,从你的程序上看没有问题!

我这里调试了一下,结果是正确的。

#6


引用 4 楼 libinfei8848 的回复:
scanf("%d %d",&amp;a,&amp;b);//参数不对

格式不对

#7


在键盘输入“ 3,5”,看看结果。
注意:在数字,逗号之间出现空格!

#8


引用 7 楼 aining0809 的回复:
在键盘输入“3,5”,看看结果。
注意:在数字,逗号之间出现空格!

注意:数字,逗号之间 不要出现空格!

#9


我明白了,我在百度上也问了这个问题,并附有运行的图片,立刻我就知道哪里错了,我输入的格式没有错误,错误在于我再输入数字时,用的是半角的“,”所以错了,麻烦大家了。

#10


还有我想问一下:怎么发图片啊?

#11


定义一个带参的宏,使2个参数相加。编写程序,输入两个数作为使用宏的实参,输出它们的和。

#1


注意你的输入格式啊 应该输入 16,25再回车结束就可以了

#2


程序应该没问题,我在gcc下面是了一下可以交换的。

#3


换个宏试试看!!

#define swap(a,b) a ^= b; b ^= a; a ^= b

#4


scanf("%d %d",&a,&b);//参数不对

#5


你是不是键盘输入时,格式有问题啊???
在swap前输出一下a,b的值,从你的程序上看没有问题!

我这里调试了一下,结果是正确的。

#6


引用 4 楼 libinfei8848 的回复:
scanf("%d %d",&amp;a,&amp;b);//参数不对

格式不对

#7


在键盘输入“ 3,5”,看看结果。
注意:在数字,逗号之间出现空格!

#8


引用 7 楼 aining0809 的回复:
在键盘输入“3,5”,看看结果。
注意:在数字,逗号之间出现空格!

注意:数字,逗号之间 不要出现空格!

#9


我明白了,我在百度上也问了这个问题,并附有运行的图片,立刻我就知道哪里错了,我输入的格式没有错误,错误在于我再输入数字时,用的是半角的“,”所以错了,麻烦大家了。

#10


还有我想问一下:怎么发图片啊?

#11


定义一个带参的宏,使2个参数相加。编写程序,输入两个数作为使用宏的实参,输出它们的和。