摘要:
看到BaiDu的笔试题一道。已知一个字串由GBK汉字和ansi编码的数字字母混合组成,编写C语言函数实现从中去掉所有ansi编码的的数字和字母(包括大小写),要求在原字串上返回结果。函数接口为:int filter_ansi(char* gbk_string)。注:汉字的GBK编码范围是 0x8140 - 0xFEFE。其实这题的思想与 在字符串中删除特定的字符 类似,事实上还要简单,因为没有过滤规则(参考博文后一个参数可以看成是过滤规则)。汉字编码常用的有GBK和GB2312,一般用双字表示,为了区分ansi编码,其最高位一般为1。下面写成代码如下#include <stdio.h&g 阅读全文
摘要:
听讨论的时候,遇到一题是关于++i*++i的——这样的讨论意义不大,却也可以一窥编译器对相关问题的处理。原题如下相关代码说明如下#include <stdio.h>#define POWER(X) X*Xint main(){ int ch = 8; int sum = POWER(ch++); sum = POWER(++ch); return 0;}如果添加printf输出,其第一个sum = 64,第二个sum = 144将上面的进行汇编编译得到。gcc -S test.c程序main的主要汇编代码main: pushl %ebp movl %esp, %ebp subl $ 阅读全文