摘要:以下来自msdn:Objects of an integral type can be converted to another wider integral type (that is, a type that can represent a larger set of values). This widening type of conversion is called "integral promotion." With integral promotion, you can use the following in an expression wherever an 阅读全文
Integral Promotions整数提升和符号扩展(char,unsigned char,signed char)
2013-08-03 00:38 by youxin, 1576 阅读, 0 推荐, 收藏,stack around the variable “ ” was corrupted
2013-08-02 23:28 by youxin, 280 阅读, 0 推荐, 收藏,
摘要:用scanf格式控制不当经常发生此错误。如short int a=10; scanf("%d",&a);应该是%hd;一般是越界引起的。参看:http://blog.sciencenet.cn/blog-436197-549687.html 阅读全文
char、signed char 和 unsigned char 的区别
2013-08-02 23:12 by youxin, 2288 阅读, 2 推荐, 收藏,
摘要:ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char.而不是像short、int一样只有两种(int默认就是signed int).三者都占1个字节(1 byte),因此:signed char取值范围是 -128 到 127(有符号位)unsigned char 取值范围是 0 到 255这个大家都很清楚!!但是char 呢?范围是多少?答案是:不一定!!!我们先看一下大师们怎么说的:(Thinking in C++ 2nd):signed is the default and is only necessary with char; char 阅读全文
编程之美求二进制中1的个数
2013-08-02 23:05 by youxin, 3480 阅读, 0 推荐, 收藏,
摘要:求二进制中1的个数。对于一个字节(8bit)无符号整形变量,求其二进制表示中"1"的个数,要求算法的执行效率尽可能的高。我们首先看看无符号字节类型,c中char中默认是signed的,写一段代码:int main(){ char a='€'; printf("%d",a+0);}€的代... 阅读全文
转:一个Sqrt函数引发的血案
2013-08-02 21:10 by youxin, 860 阅读, 0 推荐, 收藏,
摘要:我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢?虽然有可能你平时没有想过这个问题,不过正所谓是“临阵磨枪,不快也光”,你“眉头一皱,计上心来”,这个不是太简单了嘛,用二分的方法,在一个区间中,每次拿中间数的平方来试验,如果大了,就再试左区间的中间数;如果小了,就再拿右区间的中间数来试。比如求sqrt(16)的结果,你先试(0+16)/2=8,8*8=64,64比16大,然后就向左移,试(0+8)/2=4,4*4=16刚好,你得到了正确的结果sqrt( 阅读全文
字符串逆序总结
2013-08-02 21:00 by youxin, 835 阅读, 0 推荐, 收藏,
摘要:对一个字符串求逆序,常用方法:void reverse1(char *s){ int len=strlen(s); char *p=s;//p指向首字符 char *q=s+len-1;//q指向最后一个字符 while(q>p) { char t... 阅读全文
进制转换算法
2013-08-02 18:04 by youxin, 1053 阅读, 0 推荐, 收藏,
摘要:pojg上面第2734,2735是关于8和10机制互转的。我刚开始用stack方法;#include#include#include#includeclass Stack{public: char a[16]; int i; Stack() { i=0; ... 阅读全文
c语言string.h和memory.h某些函数重复问题
2013-08-02 16:06 by youxin, 1705 阅读, 1 推荐, 收藏,
摘要:在C语言中,为了使用memset()函数,你是选择#include 还是?两个都可以,如何选择?,标准里面这么写的,全平台通用, 这个 大部分编译器都实现了。http://pubs.opengroup.org/onlinepubs/7908799/xsh/string.h.htmlhttp://www.cplusplus.com/reference/clibrary/cstring/VC10里面,memory.h定义了string.h里面的部分函数,包括memset、memchr、memcmp以及相关的安全操作,定义的部分是和string.h里面一模一样的。而gcc(4.4.5)里面,memo 阅读全文
相邻数字的基数不等比:skew数
2013-08-02 15:44 by youxin, 431 阅读, 0 推荐, 收藏,
摘要:2973:Skew数描述在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1)。 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, 10120(skew) = 1*(25-1) + 0*(24-1) + 1*(23-1) + 2*(22-1) + 0*(21-1) = 31 + 0 + 7 + 6 + 0 = 44. 前十个skew数是 0、1、2、10、11、12、20、100、101、以及102。输入输入包含一行或多行,每行包含一个整数n。 如果 n = 0 表示输入结束,否则n是一个skew 数输出对于每一个输入,输出它的十进制表示。转换成十进 阅读全文
相邻数字的基数等比确定进制问题pojg2972
2013-08-02 15:10 by youxin, 881 阅读, 0 推荐, 收藏,
摘要:解决数制转换问题时,如果所给的数值不是用十进制表示的,一般用一个字符型数组来存放,数组的每个元素分别存储它的一位数字。然后按位转换求和,得到十进制表示,再把十进制转成成其他所求的进制表示。转成的结果也用一个字符型数组表示。根据数制表示中相邻位的基数关系,可以把不同的数制分成2类:一类数制表示中相邻位的基数是等比关系,如十进制表示。另一类相邻位的基数是不等比的。如时间表示中。2927:确定进制:描述6*9 = 42 对于十进制来说是错误的,但是对于13进制来说是正确的。即, 6(13) * 9(13) = 42(13), 而 42(13) = 4 * 131 + 2 * 130 = 54(10. 阅读全文
浙公网安备 33010602011771号