![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 70
hell2pradise
这个作者很懒,什么都没留下…
展开
-
关于未定义行为的一些研究
#include int main(){ int b; printf("%d,%d/n",++b,b++); return 0;} 运行结果取决于未定义行为的一些不良写法,可总有人拿出来当题考别人。。。首先printf()函数里面参数的求值顺序,标准C里只规定了四个运算符的求值顺序,||,&&,?:,还有逗号,但不是函数参数表里的逗号。基于任何关原创 2010-05-21 21:27:00 · 629 阅读 · 0 评论 -
CS:APP缓冲区溢出攻击练习题
CS:APP一书的第三章最后的练习题是一个练习缓冲区溢出攻击的题目程序是这样的//bufbomb.c /* Bomb program that is solved using a buffer overflow attack */ #include #include #include #include /* Like gets, exc原创 2010-05-28 23:13:00 · 2370 阅读 · 2 评论 -
CS:APP中的tsh示例
<br />/* * tsh - A tiny shell program with job control * * <Put your name and login ID here> */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <ctype.h>#include <signal.h>#include <sys/types.h>#原创 2010-06-12 14:05:00 · 1225 阅读 · 0 评论 -
POJ 1988 第一次在POJ上做题,5次AC
#include int b[30003],count[30003],f[30003];intfind(int i){ int x=i,p,s=0; while(x!=f[x]){ x=f[x]; s+=b[x]; } while(i!=x){ b[i]+=s; p=f[i]; f[i]=x; s-=b[p]; i=p; } return x;}voidmerge(int i,int j){ int fi,fj; fi=find(i); fj=find(j); f[fj]=fi; b[fj]原创 2010-08-20 16:50:00 · 829 阅读 · 0 评论 -
位计数(二进制中1的个数)--读Hacker's Delight
计算一个字中1位的数目有时被称为“种群计数”以一个32位的int为例最朴素的方法:检查最后一位,计数,然后无符号右移。int bit_count(unsigned int i){ int count=0; while(i){ count+=i&0x00000001; i>>=1; } return count;}这样的算法复杂度为O(logi),最坏的时候要做32次循环。O(m)算法,m为二进制中1的个数x-1操作将x的二进制表示中的最右边的1改成0,而该位右原创 2010-09-23 12:08:00 · 2638 阅读 · 0 评论