当前位置:  开发笔记 > 编程语言 > 正文

C++在不需要括号时期待括号?

如何解决《C++在不需要括号时期待括号?》经验,为你挑选了2个好方法。

我遇到了一个我无法弄清楚的问题,我对c ++仍然很新.这是一段代码:

#define secondsInHour 3600;          
#define secondsInMinute 60;

using namespace std;

int main()
{
    int totalSeconds;
    int convertedHours;
    int convertedMinutes;
    int convertedSeconds;

    cout << "Enter time in seconds: ";
    cin  >> totalSeconds;
    cout << endl;

    convertedHours = totalSeconds / secondsInHour;                          
    convertedMinutes = (totalSeconds - (convertedHours*secondsInHour))/secondsInMinute;             //D

    return 0;
}

当我尝试运行时,我收到以下错误:预期')'有人能解释一下吗?错误指的是倒数第二行.

编辑:我正在使用Visual Studio 2015.抱歉,我指的是错误的行.产生错误的行是"convertedMinutes = ...."



1> Remy Lebeau..:

问题在于#define宏中的分号.

当预处理器将宏的文本替换为代码时,编译器看到的代码如下所示:

using namespace std;

int main()
{

int totalSeconds;
int convertedHours;
int convertedMinutes;
int convertedSeconds;

cout << "Enter time in seconds: ";
cin  >> totalSeconds;
cout << endl;

convertedHours = totalSeconds / 3600;;                          
convertedMinutes = (totalSeconds - (convertedHours*3600;))/60;;             //D

return 0;

看看secondsInHour宏中的额外分号如何破坏convertedMinutes表达式?

你需要删除分号:

#define secondsInHour 3600    
#define secondsInMinute 60



2> Slava suppor..:

这段代码:

#define secondsInHour 3600;          
#define secondsInMinute 60;

有以下问题:

你不应该#define在这种情况下使用

如果您使用#define更好,请使用大写的MACRO名称以避免碰撞

如果你使用的话#define,最后不要加分号

所以要么:

const int secondsInHour = 3600;          
const int secondsInMinute = 60;

要么

#define secondsInHour 3600
#define secondsInMinute 60

甚至更好

#define SECONDS_IN_HOUR 3600
#define SECONDS_IN_MINUTE 60

但第一个变种是首选,因为它不会给出这样的意外惊喜

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有