鱼C论坛

 找回密码
 立即注册
查看: 4837|回复: 3

[已解决]关于“宏定义中的两道衣裳命令的情形“

[复制链接]
发表于 2016-11-7 15:40:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#define exchange(a,b) 
{
int t;\
t=a;\
a=b;\
b=t;\
}

int main()
{
        int x=10 ;
        int y=20 ;
        printf("x=%d ; y=%d \n", x , y );

        exchange(x,y);
        printf("x=%d ; y=%d \n", x , y );
}

今天看到一个宏定义的练习,代码如上,运行显示错误,提示如图,请知道的鱼油帮忙解答下!!!
error C2449: found '{' at file scope (missing function header?)
error C2059: syntax error : '}'
最佳答案
2023-12-6 17:32:02
鱼C篮球 发表于 2023-12-06 17:31
#include
#define exchange(a,b)
{
int t;\
t=a; ...

首先,你的代码中定义了一个宏exchange(a,b),但是宏定义应该是不需要加大括号的。另外,还需要包含stdio.h头文件来使用printf函数。

修改后的代码如下:
#include <stdio.h>#define exchange(a,b) \{ \    int t = a; \    a = b; \    b = t; \}int main(){    int x = 10;    int y = 20;    printf("x=%d ; y=%d \n", x, y);    exchange(x, y);    printf("x=%d ; y=%d \n", x, y);}
这段代码中,我们定义了一个宏exchange(a,b),用于交换两个变量的值。在main函数中,我们首先初始化了变量x和y的值分别为10和20,然后使用printf打印出它们的当前值。

接下来,我们调用exchange宏来交换变量x和y的值。具体实现是通过一个临时变量t来暂存变量a的值,然后将a赋值为b,再将b赋值为t。这样,变量x和y的值就完成了交换。

最后,我们再次使用printf来验证交换是否成功。现在你可以运行代码并观察输出结果,看看变量x和y的值是否被成功交换了。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-7 15:50:12 | 显示全部楼层
#include<stdio.h>
#define exchange(a,b) \
{\
int t;\
t=a;\
a=b;\
b=t;\
}

int main()
{
        int x=10 ;
        int y=20 ;
        printf("x=%d ; y=%d \n", x , y );

        exchange(x,y);
        printf("x=%d ; y=%d \n", x , y );
}

改成这样就OK了,但原因还是没明白,请各位鱼油出来指点指点!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-6 17:31:28 | 显示全部楼层
#include<stdio.h>
#define exchange(a,b)
{
int t;\
t=a;\
a=b;\
b=t;\
}

int main()
{
        int x=10 ;
        int y=20 ;
        printf("x=%d ; y=%d \n", x , y );

        exchange(x,y);
        printf("x=%d ; y=%d \n", x , y );
}

@FishC_GPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-6 17:32:02 | 显示全部楼层    本楼为最佳答案   
鱼C篮球 发表于 2023-12-06 17:31
#include
#define exchange(a,b)
{
int t;\
t=a; ...

首先,你的代码中定义了一个宏exchange(a,b),但是宏定义应该是不需要加大括号的。另外,还需要包含stdio.h头文件来使用printf函数。

修改后的代码如下:
#include <stdio.h>#define exchange(a,b) \{ \    int t = a; \    a = b; \    b = t; \}int main(){    int x = 10;    int y = 20;    printf("x=%d ; y=%d \n", x, y);    exchange(x, y);    printf("x=%d ; y=%d \n", x, y);}
这段代码中,我们定义了一个宏exchange(a,b),用于交换两个变量的值。在main函数中,我们首先初始化了变量x和y的值分别为10和20,然后使用printf打印出它们的当前值。

接下来,我们调用exchange宏来交换变量x和y的值。具体实现是通过一个临时变量t来暂存变量a的值,然后将a赋值为b,再将b赋值为t。这样,变量x和y的值就完成了交换。

最后,我们再次使用printf来验证交换是否成功。现在你可以运行代码并观察输出结果,看看变量x和y的值是否被成功交换了。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-11 08:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表