在这个基本的C ++程序中,为什么不能打印出常量Pi?
#include <iostream>
using namespace std;
#define Pi 3.1415;
int main() {
cout << Pi << endl;
return 0;
} //main
答案 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
}