摘要: 近日,在书中看到一个关于数据交换函数的源代码,发现挺有意思,具体代码如下: 根据 C 语言异或赋值操作符(^=)的计算规则和异或运算符(^)的运算法则,应按照从右到左的顺序进行计算,具体计算过程演示如下: 从计算过程可以看出,a 和 b 的值的确进行了交换,那我们通过具体程序来进行验算一下: 笔者的 阅读全文
posted @ 2016-08-06 20:07 茫茫人海1314 阅读(884) 评论(1) 推荐(0) 编辑
摘要: 1.C语言操作符优先级表2.算术操作符中%(取模操作符)只适用于整型类型,其余几个操作符(+、-、*、/)既适用于整型类型也适用于浮点类型。当/操作符的两个操作数都是整型时,它执行整除运算,其它情况下则执行浮点数除法。3.移位操作符包括左移位和右移位操作符,且只适用于整型类型。左移位时,值最左边的位被丢弃,右边多出来的空位则由0补齐。右移位时,值最右边的位被丢弃,左边移入的位由0填充(逻辑移位)或由原先该值的符号位填充(算术移位)。标准说明无符号值执行的所有移位操作都是逻辑移位,但对于有符号值则取决于编译器。而且,如果移位的位数比操作数的位数还要多,结果也是由编译器决定的。4.位操作符对操作数 阅读全文
posted @ 2013-09-12 21:17 茫茫人海1314 阅读(306) 评论(1) 推荐(0) 编辑
摘要: 1.空语句只包含一个分号,它本身并不执行任何任务,其适用的场合是语法要求出现一条完整的语句,但并不需要它执行任何任务。2.C语言中并不存在专门的“赋值语句”,赋值就是一种操作,在表达式内进行。通过在表达式后面加上一个分号,就可以把表达式转变为语句。因此,表达式x = y + 3;ch = getchar();实际上是表达式语句,而不是赋值语句。3.if语句的语法如下:if( expression ) statementelse statement其中,括号是if语句的一部分,而不是表达式的一部分,因此它是必须出现的。C语言中并不具备布尔类型,而是用整型来代替,零值表示“假”,非零值... 阅读全文
posted @ 2013-08-29 21:32 茫茫人海1314 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 1.在C语言中,仅有4种基本数据类型:整型、浮点型、指针和聚合类型(如数组和结构等)。整型家族包括字符、短整型、整型和长整型,它们都分为有符号和无符号两种。标准规定整型值相互之间大小的规则:长整型至少应该和整型一样长,而整型至少应该和短整型一样长。ANSI标准规定了各种整型值的最小允许范围,如下表所示:类 型最小范围char0~127signed char-127~127unsigned char0~255short int-32767~32767unsigned short int0~65535int-32767~32767unsigned int0~65535long int-214748 阅读全文
posted @ 2013-08-24 23:46 茫茫人海1314 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 1.从源代码到生成可执行程序的过程整体上可以分为两个阶段:编译和链接。其中,编译过程大致上又可分为:预处理、编译和汇编。预处理阶段主要对源代码中的预处理指令(包含宏定义指令、条件编译指令和头文件包含指令)及某些特殊符号(如LINE、FILE等)进行处理。编译阶段主要对预处理后的代码进行词法和语法分析,产生绝大多数错误和警告信息,并生成目标(中间)代码;同时,还会根据用户提供的选项对生成的目标(中间)代码进行优化。汇编阶段主要将编译阶段生成的代码转换成目标机器指令。链接过程主要由链接器将各个目标文件、标准库函数和其它相关文件合并起来,生成一个单一而完整的可执行程序。2.我们通常所说的空白字符包括 阅读全文
posted @ 2013-08-01 17:08 茫茫人海1314 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 1.C语言是一种自由格式的程序设计语言,没有规则要求我们必须如何书写语句。然而,如果我们在编写程序时能够遵守一些约定还是非常值得的,它可以使代码更加容易阅读和修改。另外,预处理命令有较为严格的规则。2.要从逻辑上删除一段代码,最好使用预处理命令,例如:#if 0 statements#endif3.C语言中所有传递给函数的参数都是按值传递的。4.NUL和NULL的区别:NUL是ASCII字符集中'\0'字符的名字,其字节模式为全0。NUL是作为字符串终止符,本身并不被看作是字符串的一部分。另外,并不存在预定义的符号NUL,如果你想在程序中使用它而不是字符常量‘\0',那 阅读全文
posted @ 2013-07-30 21:06 茫茫人海1314 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 目前,我们接触的汉字编码主要包括GBK和GB2312。其中,GB2312又称国标码,它是一个简化字的编码规范,也包括其他的符号、字母、日文假名等,共7445个图形字符,其中汉字占6763个。我们平时说6768个汉字,实际上里边有5个编码为空白,所以总共有6763个汉字。GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”,习惯上称第一个字节为“高字节”,第二个字节为“低字节”。GB2312中汉字的编码范围为,第一字节0xB0-0xF7(对应十进制为176-247),第二个字节0xA0-0xFE(对应十进制为160-254)。而GBK是GB2312的扩展,是向上兼 阅读全文
posted @ 2013-07-25 22:13 茫茫人海1314 阅读(5525) 评论(1) 推荐(2) 编辑
摘要: 要求:处理一个字符串,删除字符串中多余的空格、水平制表符和空行,并满足下列要求:(1)对原字符串只能进行一次扫描。(2)不允许申请新的空间。(3)处理后的字符串的首尾不能有空格、制表符和空行。(4)如果原字符串中连续出现空格和水平制表符,则处理后的字符串只需存储一个空格。(5)如果原字符串中连续出现空格、水平制表符和空行,则处理后的字符串只需存储一个空行。C语言实现代码如下(该代码经过garbageMan提醒后进行了更改): 1 //state 0: 初始状态 2 //state 1: 前一个字符是'\n'(非初始状态) 3 //state 2: 前一个字符是空格(非初始状态) 阅读全文
posted @ 2013-07-24 16:36 茫茫人海1314 阅读(6812) 评论(7) 推荐(0) 编辑