鱼C论坛

 找回密码
 立即注册
查看: 2799|回复: 8

[已解决]常量作业

[复制链接]
发表于 2022-3-19 15:05:08 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

#define r 5
#define S(r) "2*3.14*r*r"
#define C(r) "2*3.14*r"

int main()
{
    const char* NL="\n";

    printf("Line1%s",NL);
    printf("Line2%s",NL);
    printf("半径为%d的圆\n",r);
    printf("面积是:%4.2f\n",S(r));
    printf("周长是:%4.2f\n",C(r));

    return 0;
}

输出
常量-作业.c:26:34: warning: format specifies type 'double' but the argument has type 'char *' [-Wformat]
    printf("面积是:%4.2f\n",S(r));
                    ~~~~~    ^~~~
                    %4.2s
常量-作业.c:16:14: note: expanded from macro 'S'
#define S(r) "2*3.14*r*r"
             ^~~~~~~~~~~~
常量-作业.c:27:34: warning: format specifies type 'double' but the argument has type 'char *' [-Wformat]
    printf("周长是:%4.2f\n",C(r));
                    ~~~~~    ^~~~
                    %4.2s
常量-作业.c:17:14: note: expanded from macro 'C'
#define C(r) "2*3.14*r"
             ^~~~~~~~~~
2 warnings generated.

该怎么改
最佳答案
2022-3-19 15:06:08
#include <stdio.h>

#define r 5
#define S(r) 2*3.14*r*r           // 把双引号去掉
#define C(r) 2*3.14*r            // 把双引号去掉

int main()
{
    const char* NL="\n";

    printf("Line1%s",NL);
    printf("Line2%s",NL);
    printf("半径为%d的圆\n",r);
    printf("面积是:%4.2f\n",S(r));
    printf("周长是:%4.2f\n",C(r));

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-19 15:06:08 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

#define r 5
#define S(r) 2*3.14*r*r           // 把双引号去掉
#define C(r) 2*3.14*r            // 把双引号去掉

int main()
{
    const char* NL="\n";

    printf("Line1%s",NL);
    printf("Line2%s",NL);
    printf("半径为%d的圆\n",r);
    printf("面积是:%4.2f\n",S(r));
    printf("周长是:%4.2f\n",C(r));

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

使用道具 举报

发表于 2022-3-19 15:07:26 | 显示全部楼层
#include <stdio.h>

#define r 5

// 去掉字符串
#define S(r) 2 * 3.14 * r *r
#define C(r) 2 * 3.14 * r

int main()
{
    const char *NL = "\n";

    printf("Line1%s", NL);
    printf("Line2%s", NL);
    printf("半径为%d的圆\n", r);
    printf("面积是:%4.2f\n", S(r));
    printf("周长是:%4.2f\n", C(r));

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

使用道具 举报

 楼主| 发表于 2022-3-19 15:10:26 | 显示全部楼层

楼市要快一点,也谢谢你呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-19 15:14:18 | 显示全部楼层

#include <stdio.h>


#define S(r) 3.14159*r*r


int main()
{
    const char* NL="\n";
    const double C(r)=2*3.1415*r;
    int r=5;

    printf("Line1%s",NL);
    printf("Line2%s",NL);
    printf("半径为%d的圆\n",r);
    printf("面积是:%4.2f\n",S(r));
    printf("周长是:%4.2f\n",C(r));

    return 0;
}

输出
常量-作业.c:22:20: error: a parameter list without types is only allowed in a function definition
    const double C(r)=2*3.1415*r;
                   ^
常量-作业.c:22:32: error: use of undeclared identifier 'r'
    const double C(r)=2*3.1415*r;
                               ^
2 errors generated.

问:想用const该怎么定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-19 15:16:30 | 显示全部楼层

首先,你就算是声明函数也不能把返回值声明为常量,

然后,你这个是定义宏,只能用 #define
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-19 15:21:56 | 显示全部楼层
isdkz 发表于 2022-3-19 15:16
首先,你就算是声明函数也不能把返回值声明为常量,

然后,你这个是定义宏,只能用 #define

那如何用const定义函数呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-19 15:23:11 | 显示全部楼层
Weabu 发表于 2022-3-19 15:21
那如何用const定义函数呢

const 是定义常量的,不能用来定义函数,

因为函数的返回值不能为常量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-19 15:24:24 | 显示全部楼层
isdkz 发表于 2022-3-19 15:23
const 是定义常量的,不能用来定义函数,

因为函数的返回值不能为常量

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 17:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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