乘法时非法间接

  发布于 2023-02-13 13:52

我开始学习C++了.这是我遇到的一个问题:

#include 
using namespace std;
#define PI 3.14;

int main(){
    double r = 5.0;
    double circle;
    double inp;

    circle = 2 * PI * r;
    cout << circle;
    cin >> inp;
}

它显示错误:error C2100: illegal indirection.我用谷歌搜索但没有找到答案.谢谢

2 个回答
  • #define PI 3.14;
    

    ;是错的,删除它.

    顺便说一句,你的行扩展为circle = 2 * 3.14; * r; 所以编译器然后抱怨*r,这解释了错误消息.

    2023-02-13 13:54 回答
  • 宏是(相对)简单的替换,所以,当你写:

    #define PI 3.14;
    circle = 2 * PI * r;
    

    它实际上最终为:

    circle = 2 * 3.14; * r;
    

    实际上有两个陈述:

    circle = 2 * 3.14;
    * r;
    

    如果r是某个描述的指针,那最后一行将是一个完全有效的表达式(尽管它不是非常有用的表达式).然而,鉴于它是一个双倍,这是你从非法间接的地方.

    除非在非常特殊的情况下,否则现在通常应该避免使用宏.使用它们来提供内联函数主要由inline关键字("大多数")包含,因为inline关键字只是一个建议.

    此外,使用它来提供常量可以通过const关键字更好地完成(具有完整类型支持和通常更好的调试的优点).

    换句话说,你的PI常量会更好地写成:

    const double PI = 3.141592653589;
    

    我现在使用预处理器的唯一地方就是条件编译.


    除此之外,你可能意味着circumference而不是circle.前者是圆圈外侧的长度,后者根本不是长度值.

    2023-02-13 13:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有