简单的c++问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:50:27
#include<iostream>
using namespace std;
int main()
{
cout<<"please enter a char..."<<endl;
char c;
cin>>c;
bool prime=true;
if(c<65||c>90) prime=false;
#if prime
c=c+32;
cout<<c<<endl;
#else
c=c-32;
cout<<c<<endl;
#endif
return 0;
}
希望用条件编译,目的就是大小写的转换
但是好像+32的没有运行……一直都是-32的
?应该不是{}的问题啊
否则编译也通不过……
…………题目要用条件编译…………我也没办法
然后,为什么一定会执行#if后面的语句??prime会变成false呀……而且实际上好像是if后面这段被抛弃了……

#include<iostream>
using namespace std;
int main()
{
cout<<"please enter a char..."<<endl;
char c;
cin>>c;
bool prime=true;
if(c<65||c>90) prime=false;
#if prime
{
c=c+32;
cout<<c<<endl;
}
#else
{
c=c-32;
cout<<c<<endl;
}
#endif
return 0;
}

既然叫做条件编译,顾名思义,是在编译的时候就已经被解释了。
你已经定义了prime,所以编译器只编译了
#if prime
c=c+32;
cout<<c<<endl;
#else
这一段。
#else
c=c-32;
cout<<c<<endl;
#endif
这段被编译器抛弃了,当然更不可能生成可执行代码。你这里要用的是if-else语句而不是条件编译的#if!

#include<iostream>
using namespace std;
int main()
{
cout<<"please enter a char..."<<endl;
char c;
cin>>c;
if(c<64||c>89)
{
c=c-32;
cout<<c<<endl;
}
else
{ <