has_7
2021-09-25 18:33
采纳率: 100%
浏览 46

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 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题