has_7 2021-09-25 18:33 采纳率: 100%
浏览 53
已结题

c++,关于#define

为何#difine在函数内部定义常量不会报错,但是输出就有问题了

//2021.9.25 日创建并修改
#include<iostream>
using namespace std;

//常量的定义方式
//1. #define 宏常量(宏常量暂时先记住就行): #define 常量名 常量
//2. const修饰的变量: const 数据类型 常量名 = 常量

//1. #define 宏常量
#define Day 7//#define宏常量写在函数外面

int main() {
    //尝试函数内部用#define宏常量
    #define aaa 3.14;//没有报错
    //输出
    //cout << "圆周率约等于" << aaa << "。" << endl;//为何这里的"<<"会报错"应输入表达式"呢?

    //如果想修改常量。。。
    //Day = 14;    //报错,因为Day是常量,一旦修改就会报错(报错内容:表达式必须是可修改的左值)
                                                                //左值:等号左边的值(应该吧)

    //输出下试试
    cout << "一周总共有:" << Day << " 天" << endl;

    //2. const修饰变量
    const int month = 12;//const修饰的常量写在函数内部
    //month = 24;//尝试修改会报错x

    system("pause");

    return 0;
}

  • 写回答

2条回答 默认 最新

  • 关注

    #define 宏是被预处理器处理的,直接进行文本替换
    用 #define aaa 3.14; 定义常量时后面不要写 ; 分号
    不然 ; 分号会作为常量内容的一部分,
    这样编译时。代码中的aaa会被替换为常量内容,变成:

    cout << "圆周率约等于" << 3.14; << "。" << endl;
    
    3.14之后就多了; 就报错了
    

    如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 已采纳回答 9月25日
  • 创建了问题 9月25日

悬赏问题

  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题