`
buluzhai
  • 浏览: 108352 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
#include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (main + (exit - main)*(j/1000))(j+1); } 解释: j因为是个参数,main函数在无参数调用时会被初始化为1,当j从1增长到1000的时候,j/1000会从0变为1,(exit - main)是main函数和exit函数的地址差值,也就是说j到1000之前,(main + (exit - main)*(j/1000))即是main(),到10 ...
1:装好bochs 2:装好nasm 3:liux.asm org 0x7c00 ; BIOS自检完后将转到内存绝对地址7c00处继续执行 jmp _start _start: xor ax, ax ; make it zero mov ds, ax mov es, ax ;; 设置BIOS输出的属性(其实位置、颜色) xor dx, dx mov bx, 0x000e ;; 通过BIOS的INT 10H中断输出文字 mov bp, msg mov cx, msglen m ...
  1、汝应频繁催动lint工具,据其语法声明修习内力,此事皆因lint之思虑决断实远在君上。   2、不可依随NULL指针,如若不然,混沌痴颠必俟君于彼岸。   3、纵有天赋大智慧,知晓其事无碍,汝亦当尽数强制挪移函数参数为原型所期之数据类型,以免一时疏忽,致使数据类型向汝讨还血债。   4、若头文件未于函数原型之中声明返回值类型,汝当亲为此事,更须谨慎再三,以防不测降临汝身。   5、汝须亲核字符串、数组操作之越界与否。古之圣人有言: 尝祈门人对答“然也”,不意门人答曰“吾了然于胸无须多虑尽请宽心他日趋庭必当重谢”——所期者短,所获者长,此于数组,实最险要处也。   6、若函数声明 ...
在C语言中,有一个方法可以使用可变参数,可变参数是指,函数的有一些参数不是必要的。一些编程语言中,这些参数通常有一些默认值。 比如C++中的可变参数 int myFunc(int a, int b, int ab=0){ if (ab==0){ return a+b; }else{ return a+b ...
Before we apply a function we must first evaluate its arguments. 这一点常常是编程语言的神秘所在。在SICP的封面,EvalApply是被画作一个阴阳的图案。AlanKay说他可以在一页纸上写出最强大的编程语言,主要说的也是Eval和Apply。 如果你觉得简单就是美,你完全可以定义一个图灵完备的语言,仅仅通过一个数组和“减1,然后跳转”这点东西。但是我们的目标是做一个有用的语言。 SmallTalk是有用的,跟Kay想的差不多。Lisp也是一样。 当然,使用惰性求值,你可以在参数用到的时候才去计算他。 下面是著名的那一对了 ...
在编译MTK过程中,在链接过程中出现 Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o),Not enough information to produce a SYMDEFs file。 通过MTK的LOG文件无法看出具体的错误信息,经查找是有些C的标准函数MTK上编译是可以通过,但是link阶段就会出错,如C标准库的malloc,printf之类的函数, 解决的方法是把这些函数改成MTK的相应函数就可以了, 如malloc->OslMalloc,printf->_cprintf。
刚学会的一招 SVN文件夹下会有许多.svn的“meta数据”。这些数据久而久之会带来不少麻烦。尤其是基于资源管理器交互的Windows系统,怎么样方便的删除svn文件呢 今天看了Jon Galloway的一个注册表脚本,十分方便,分享如下: 建立一个文本文件,取名为kill-svn-folders.reg(扩展名由txt改为reg),内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] @="Delete SVN F ...
结构化程序理论是程序设计语言理论的一个结果。他是说所有可计算函数都可以用三种方式组合子程序来实现。这三种控制结构是 1:序列,执行一个子程序,然后执行另外一个子程序。 2:分支,通过布尔变量的值选择执行两个程序中的某一个。 3:重复,不断执行一个子程序,知道某个变量的值为true. 计算机科学家大都认为这个理论是Corrado Böhm和 Giuseppe Jacopini 1966年的一篇论文中提出的。不过,David Harel认为这来源于1946年的冯诺依曼结构,和Stephen Kleene的一般形式理论。
select * from html where url="http://news.ycombinator.com/" and xpath='//tr/td/a[substring(@href,1,4)="http"][@href!="http://ycombinator.com"]' http://developer.yahoo.com/yql/console/
龙树入雪山,一老比丘以c,c++,java授之。龙树诵受爱乐,不日皆通。即起骄慢,自言:“C++中,津途甚多。编程虽妙,以理推之,故有未尽。未尽之中,可推而演之,以悟后学“。欲以无所推屈,表一切智相。菩萨见其如此,惜而愍之,即接入海,以Lisp无量妙法授之。龙树即得诸经一相,深入无生,三忍具足。
unsigned int v; //算出v后面有多少个0 int c; // c保存结果 // 比如二进制数1101000,c为3 if (v) { v = (v ^ (v - 1)) >> 1; // 把c的后面的0都置为1,其他的置为0 for (c = 0; v; c++) { v >>= 1; } } else { c = CHAR_BIT * sizeof(v); }
#define SWAP(a, b) ((&(a) == &(b)) || \ (((a) -= (b)), ((b) += (a)), ((a) = (b) - (a)))) #define SWAP(a, b) (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b)))
unsigned int v; //计算 v中1的个数 unsigned int c; // 结果存在c for (c = 0; v; c++) { v &= v - 1; } 这是Brian Kernighan给出的算法,v中有多少个1就迭代多少次。 这在1988年出版的K&R C语言教程的2-9练习中出现。2006年4月19日,Knuth指出,这个算法出现在Peter Wegner CACM 3 (1960), 322.的书中。
unsigned int a; unsigned int b; unsigned int mask; // 如果是1则从b里选,否则从a里选。. unsigned int r; r = a ^ ((a ^ b) & mask);
分支指令的代价高,所以尽量避免使用。 跟r = (v < 0) ? -(unsigned)v : v相比,下面的指令数是差不多的,但是更快。 int v; //找出v的绝对值 unsigned int r; // 保存结果 int const mask = v >> sizeof(int) * CHAR_BIT - 1;//CHAR_BIT是字节位数,一般为8 r = (v + mask) ^ mask; //等价于 r = (v ^ mask) - mask;
Global site tag (gtag.js) - Google Analytics