2013年3月16日
摘要: 函数及其参数long int strtol(const char *nptr,char **endptr,int base);函数的解释说明这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’的时候会使用8进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非 阅读全文
posted @ 2013-03-16 10:36 tracymdy 阅读(129) 评论(0) 推荐(0) 编辑
  2013年3月13日
摘要: 老的C语言程序员中有一种倾向,就是把很短的执行频繁的计算写成宏,而不是定义为函数。完成I/O的getchar,做字符测试的isdigit都是得到官方认可的例子。人们这样做最根本的理由就是执行效率:宏可以避免函数调用的开销。实际上,即使是在C语言刚诞生时(那时的机器非常慢,函数调用的开销也特别大),这个论据也是很脆弱的,到今天它就更无足轻重了。有了新型的机器和编译程序,函数宏的缺点就远远超过它能带来的好处。 避免函数宏。在C++里,在线函数更削减了函数宏的用武之地,在Java里根本就没有宏这种东西。即使是在C语言里,它们带来的麻烦也比解决的问题更多。 函数宏最常见的一个严重问题是:如果一个参.. 阅读全文
posted @ 2013-03-13 15:13 tracymdy 阅读(266) 评论(0) 推荐(0) 编辑
  2013年3月6日
摘要: strlen返回一个类型为size_t的值,这个类型在头文件stddef.h中定义,他是一个无符号整数类型。在表达式中操作无符号书可能导致不可预料的结果if ( strlen(x) >= strlen(y) ...if ( strlen(x) - strlen(y) >= 0) ...第一条语句可以按照你的想法去工作,但第2条语句将永远是真,strlen 的结果是无符号书,所以 >= 左边的表达式也将是无符号数,而无符号数 觉不可能使负的。unsigned int a, b, c;a = 3;b = 4;c = a - b;printf("%ud",c); 阅读全文
posted @ 2013-03-06 09:13 tracymdy 阅读(158) 评论(0) 推荐(0) 编辑
  2013年3月4日
摘要: 请在(且只能在TC2.0)中运行下面代码,先不要看结果,想想会得到什么: #include<stdio.h> #include<stdlib.h> int main( int argn, char* argv[] ) { char* szStringA = "Hello,world!"; char* szStringB = "Hello,world!"; *szStringA = '-'; puts( szStringB ); return 0; } 输出结果是:"-ello,world!";。 阅读全文
posted @ 2013-03-04 08:51 tracymdy 阅读(161) 评论(0) 推荐(0) 编辑
  2013年3月3日
摘要: #include <stdio.h>int count_one_bits(unsigned ); int main(){ int a,b; a = 0; b = 1; printf("%d\n",sizeof(a=b+1)); printf("%d",a);return 0;}输出是 4 0 a 并没有被赋值。 阅读全文
posted @ 2013-03-03 09:24 tracymdy 阅读(118) 评论(0) 推荐(0) 编辑
  2013年1月21日
摘要: 读K&R的The C Programmingh Language 2nd,遇到一疑问,书中说:“尽管可以声明enum类型的变量,但编译器不检查这种类型的变量中存储的值是否为该枚举的有效值。不过,枚举变量提供这种检查,因此枚举比#define更具优势。” 枚举变量提供这种检查,什么意思?枚举变量会自己检?当然不是,作者也许想说程序员自己可以写个程序检查付给枚举变量的值是否为该枚举的有效值。/*包含头文件*/#include<stdio.h>/*枚举类型*/enummonths{JAN=1,FEB};/*函数原型*/voidenumeration(enummonthsm);ma 阅读全文
posted @ 2013-01-21 16:28 tracymdy 阅读(466) 评论(0) 推荐(0) 编辑