C语言中代码C+"a"-A

C语言中有段代码是C+"a"-A,把字符换成大写,这个代码怎么来的?每个字母代表什么意思?

首先,你写的代码应是c=c+'a'-'A',其作用是将大写字母变换成小写字母。将小写改成大写应该是c=c-'a'+'A'。
对字符型数据进行处理,实际上是对其ASCII码进行处理的。每个字符都有与其对应的ASCII码,对于英文字母的大小写,其ASCII码相差32,即小写字母比大写字母的ASCII码大32。
所以,小写转换成大写,可以写成c=c-32;而‘a'-‘A’=97-65=32,所以代入计算,c=c-('a'-'A')=c-'a'+'A'。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-21
你好,第一个问题
请问,我是不是该这样做:
在main.c中#include <tou.h>
在fun.c中同样#include <tou.h>(好像是必需的,请详细解释)
这是必需的。因为编译器只是把包含文件的代码复制过来,既然你二个文件中都用到头文件的内容,那当然要包含头文件,否则就会出错。
我的观点,如果这两步都是必需的 那么当有很多个比如10个.c程序每个里头都要#include <tou.h> 那么文件是不是会特别大,当有100个.c程序都要包含一下的话,那么不是非常重复么?) 那当然是会重复的。不过这个对程序的运行效率没任何影响,只是在编译过程中对文件的分析时间会稍长些,这也是没有办法的事,全看代码编写者如何组织结构了。
第二个问题:
会的。解决的方法就是在可能被多次包含的头文件中开头加上#pragma once,那样就可以保证此头文件代码只被执行一次,而不会造成头文件中函数多次重复定义至于引起这种情况的情况。当然你也可以自己用#ifdef等预编译处理来解决。你问的问题不就是这种情况么?main.c和fun.c中都包含头文件tou.h

第三个问题:
当我在main.c中这样
#define unchar unsigned char

那么当我在fun.c中还需要重新创建替换宏unchar吗 可以不在创建而直接使用吗?

答案是需重新创建,不能直接使用。但你可以把一些在多个文件中使用的宏、全局变量等统一定义到一个头文件中,那这样就可以避免多次定义了。 30073希望对你有帮助!

参考资料:. wyjwarn

第2个回答  2008-10-21
应该是C+'a'-A,注意这里不是双引号。是单引号,表示字符。在ASCII表中,26个英文字母是顺序挨着的,他们的差表示了字符间的距离。
第3个回答  2008-10-21
仔细点,符号都抄错
相似回答