if 和else是一对条件语句,意思就是不是它就是另一个,在代码中将大小写互换
int main()
{
char str[] = "abCDnH";
for (int i = 0; i < strlen(str); i++)
{
if (str[i] >= 'a'&&str[i] <= 'z')
{
str[i] -= 32;
}
else //else后不能加语句,会报错
{
str[i] += 32;
}
}
printf("%s",str);
return 0;
}
但是我如果我们用if和if,如下,
int main()
{
char str[] = "abCDnH";
for (int i = 0; i < strlen(str); i++)
{
if (str[i] >= 'a'&&str[i] <= 'z')
{
str[i] -= 32;
}
if (str[i] >= 'A'&&str[i] <= 'Z')//这里当str[i]被改为大写时,str[i]因为又满足现在的if条件,所以又将str[i]改为了小写
{
str[i] += 32;
}
}
printf("%s", str);
return 0;
}
但是当我们把str[i]用%s(字符串的形式打印时)计算机会出现地址获取错误
str[i]='a',是一个字符,而我们打印的是一个字符串,那'a'在ASCLL码值中时97,转化为十六进制为0X00000061,所以计算机在访问'a'地址时会出现错误。