Nan*_* HE 3 c++ if-statement visual-studio-2010 c-preprocessor
我在vs2010(win32控制台应用程序)中运行我的C代码.它被编译为C++应用程序.
#include "stdafx.h"
#define YES 1;
#define NO 0;
// function to determine if an integer is even
int isEven(int number)
{
int answer;
if ( number % 2 == 0)
answer = YES;
else
answer = NO;
return answer;
}
int main()
{
int isEven(int number);
if (isEven(17) == YES)
printf("yes ");
else
printf("no ");
if ( isEven(20) == YES)
printf("yes\n");
else
printf("no\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译错误如下.
p300.cpp(18): error C2181: illegal else without matching if
p300.cpp(30): error C2143: syntax error : missing ')' before ';'
p300.cpp(30): error C2059: syntax error : ')'
p300.cpp(31): warning C4390: ';' : empty controlled statement found; is this the intent?
p300.cpp(33): error C2181: illegal else without matching if
p300.cpp(37): error C2143: syntax error : missing ')' before ';'
p300.cpp(37): error C2059: syntax error : ')'
p300.cpp(38): warning C4390: ';' : empty controlled statement found; is this the intent?
p300.cpp(40): error C2181: illegal else without matching if
Run Code Online (Sandbox Code Playgroud)
然后我也尝试{ }为每个if-else条件语句插入几个,但代码仍然编译失败.我的代码出了什么问题?
编译错误是由于您的#define语句上的分号.删除它们.
#define是预处理器宏,而不是c语法.它不需要分号.预处理器直接替换on YES和NO,这使得:
if ( number % 2 == 0)
answer = YES;
else
answer = NO;
Run Code Online (Sandbox Code Playgroud)
变成:
if ( number % 2 == 0)
answer = 1;; // <-- Notice the two semicolons!
else
answer = 0;;
Run Code Online (Sandbox Code Playgroud)
这在if和else之间产生两个语句,因此编译错误随之而来.我怀疑你会得到不同的编译器错误当您添加{和}因
if (isEven(17) == YES)
Run Code Online (Sandbox Code Playgroud)
变得
if (isEven(17) == 1;)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这个问题被标记c,但你的文件名是.cpp,这是c ++的常见后缀.如果您使用的是c ++,请务必使用该bool类型.
bool is_even = true;
bool is_odd = false;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2221 次 |
| 最近记录: |