Zhangweisb111 发表于 2021-9-4 21:39:55

请问下面这个代码为什么字符“c”和“l”输出的时候还是大写的啊?

#define LETTER 1
//(这个LETTER 1是什么意思啊?)



int main(void)
{
char str=“C Language”
char c;
int i=0;
while( (c=str ) !='\0' )
{
i++;

#if LETTER
    if(c>='a'&&c<='z')
    {
       c=c-32;
    }
#else
    if(c>='A'&&c<='Z')
    {
       c=c+32;
   }
#end if
    printf("%c",c);
   
}
return 0;
}


请问上面这个代码,为什么#else的内容会不执行啊?为什么只执行了#if LETTER 里面的内容呢?而且上面的#defineLETTER 1 是什么意思啊?

大马强 发表于 2021-9-4 22:21:15

1、#define LETTER 1 相当于 声明一个全局变量LETTER,并为其赋值1
2、if LETTER,if (条件)因为LETTER值为1 所以条件为真,执行if语句

Zhangweisb111 发表于 2021-9-5 10:40:06

大马强 发表于 2021-9-4 22:21
1、#define LETTER 1 相当于 声明一个全局变量LETTER,并为其赋值1
2、if LETTER,if (条件)因为LETTER ...

他这个LETTER为什么要赋值为1呢?如果我赋值为2好像输出的结果也不影响啊?

大马强 发表于 2021-9-5 11:06:39

Zhangweisb111 发表于 2021-9-5 10:40
他这个LETTER为什么要赋值为1呢?如果我赋值为2好像输出的结果也不影响啊?

他的目的只是想让条件为真而已

Zhangweisb111 发表于 2021-9-5 11:51:40

大马强 发表于 2021-9-5 11:06
他的目的只是想让条件为真而已

那我想要#else的条件为真该怎么做呢?LETTER 2?

jhq999 发表于 2021-9-5 12:51:40

本帖最后由 jhq999 于 2021-9-5 12:52 编辑

Zhangweisb111 发表于 2021-9-5 11:51
那我想要#else的条件为真该怎么做呢?LETTER 2?

除了等于0,都是真,你可以把0理解成“没有”。

大马强 发表于 2021-9-5 12:56:40

Zhangweisb111 发表于 2021-9-5 11:51
那我想要#else的条件为真该怎么做呢?LETTER 2?

让条件为假就好了,你去了解下啥是条件为真,啥事条件为假

Zhangweisb111 发表于 2021-9-5 17:19:26

jhq999 发表于 2021-9-5 12:51
除了等于0,都是真,你可以把0理解成“没有”。

好的,懂了,谢谢
页: [1]
查看完整版本: 请问下面这个代码为什么字符“c”和“l”输出的时候还是大写的啊?