C++中这个条件编译哪里用错了?

来源:百度知道 编辑:UC知道 时间:2024/06/24 06:12:36
题目:输入一个字母字符,设置条件编译,使之能根据需要将小写字母改为大写字母输出或者将大写字母改为小写字母输出.
我写的答案是:
#include<iostream>
using namespace std;
int main()
{char a;
cout<<"请输入一个字母:"<<endl;
cin>>a;
while(a<65||a>90&&a<97||a>122)
{cout<<"输入的不是字母,重新输入:"<<endl;
cin>>a;
}
#if a>=65&&a<=90
a+=32;
cout<<"转换成小写字母为:"<<a<<"."<<endl;
#else
a-=32;
cout<<"转换成大写字母为:"<<a<<"."<<endl;
#endif
return 0;
}
我用VC++6.0,
可以把小写转大写,但是大写不能转小写,不知道哪出问题了.

这种情况下也用条件编译?

条件编译——根据指定的条件有选择的编译代码块的相应部分
#if a>=65&&a<=90
a+=32;
cout<<"转换成小写字母为:"<<a<<"."<<endl;
#else
a-=32;
cout<<"转换成大写字母为:"<<a<<"."<<endl;
#endif
默认编译的应该是:
a-=32;
cout<<"转换成大写字母为:"<<a<<"."<<endl;
程序运行的时候已经编译好了,所以不论你输入什么字母都按编译好的程序执行,也就是执行
a-=32;
cout<<"转换成大写字母为:"<<a<<"."<<endl;

明白?

----------------------------------
char a;
// cout<<"请输入一个字母:"<<endl;
// cin>>a;
bool bl = (a>=65&&a<=90);
cout<<"\t------"<<a<<"="<<(int)a<<"---"<<bl<<"---"<<endl;
编译的时候a还没有值,我用VC6.0编译运行的结果是?,asc码值=56,也就是bl(上面的条件编译标识)为FALSE,当然执行后面的了
当然编译器不同,编译运行的