Basic C ++程序中的常量

时间:2015-03-22 10:59:13

标签: c++

在这个基本的C ++程序中,为什么不能打印出常量Pi?

#include <iostream>
using namespace std;
#define Pi 3.1415;

int main() {
cout << Pi << endl;
return 0;
} //main

4 个答案:

答案 0 :(得分:5)

您的Pi定义包含分号;

替换后,编译的代码为

cout <<  3.1415; << endl;

什么时候应该

cout <<  3.1415 << endl;

换句话说,做

#define Pi 3.1415

没有半结肠。


尽管如此,更好的是不要将#define用于此类事情。

例如,请参阅How to use the PI constant in C++了解建议。

答案 1 :(得分:1)

您的Pi定义是一个宏而不是常量,它会在输出语句中扩展为多余的;

#define Pi 3.1415; // <<

将成为

cout << 3.1415; << endl;
           // ^

并最终导致编译错误。

要在C ++中正确声明一个常量,你应该写

const double Pi = 3.1415;

答案 2 :(得分:1)

您需要在;之后移除3.1415。 代码

#define Pi 3.1415;

表示无论何时使用Pi,它都会被3.1415;取代。注意分号是如何与double一起包含的。因此,当您使用cout<<Pi<<endl时,编译器会将其读作cout<<3.1415;<<endl,您可以看到它会给出错误。

答案 3 :(得分:0)

从宏定义中删除分号

var getRoomUpdater = (function(){
    var _userProfileId;
    var updater = function() {
        $.ajax({
            type: "post",
            url: "logs.php?user_profil=" + _userProfileId + "&user=<?php echo $user;?>",
            datatype: "html",
            success: function(data) {
                $("#chatlogs").html(data);
            }
        });
    }
    return function(userProfileId){
        _userProfileId = userProfileId;
        return updater;
    };
})();

// it will hold interval id
var abc;


// Opening a room:
var openRoom = function(roomId){
    // start automatic update
    clearInterval(abc);
    abc = setInterval(getRoomUpdater(roomId));


    // + other actions if needed
}