if语句的问题
本帖最后由 Atman 于 2014-4-21 18:37 编辑//这样写为什么会错误,不是先判断第一个if语句,在判断第二个,条件不成立就不执行吗
#include<stdio.h>
void main()
{
char ca;
ca=getchar();
if(ca >= 'a' && ca <= 'z')
{
ca -= 'a' - 'A';
}
if(ca >= 'A' && ca <= 'Z')
{
ca += 'a' - 'A';
}
putchar(ca);
}
//这样为什么就可以,加一个flag使两个个if语句只执行一个,这和执行两个if语句,一个不成立不执行不是一样的吗
#include<stdio.h>
void main()
{
char ca;
int flag = 0;
ca=getchar();
if(ca >= 'a' && ca <= 'z')
{
ca -= 'a' - 'A';
flag = 1;
}
if(flag == 0 &&(ca >= 'A' && ca <= 'Z'))
{
ca += 'a' - 'A';
}
putchar(ca);
}
#include<stdio.h>
void main()
{
char ca;
ca=getchar();
if(ca >= 'a' && ca <= 'z')
{
ca -= 'a' - 'A';
}
else if(ca >= 'A' && ca <= 'Z')
{
ca += 'a' - 'A';
}
putchar(ca);
}
你的代码错在第一个if进入后将小写改成大写,接着又执行第二个if(此时字符变成大写可以进入if里)
故再次变回小写 不一样,执行第一个 if 之后 ca值 改变,可以继续在第二个 if 继续 判断,但是第二个程序无论 ca 改成了 什么 只要 执行了 第一个 if 就不再 执行( flag 作用 )
页:
[1]