相濡以沫,不如相忘于江湖

专注,才是王道! 加班,代码,泡面,可乐。。

2013年2月19日

a,b比较和交换问题

摘要: 1、两个变量a和b,不用“if”、“?:”、“swtich”或其他判断语句,找出两个数中间比较大的。方案1:int max = ((a+b)+abs(a-b))/2方案2:int c = a - b;char *strs[2] = {"a大",”b大“};c = unsigned(c) >> (sizeof(int) * 8 - 1);2、如何将a、b的值进行交换,并且不使用任何中间变量?解析:简而言之,用异或语句比较容易,不用担心越界的问题。如果采用:a = a + b;b = a - b;a = a - b;这样做的缺点是如果a、b都是比较大的两个数,a = 阅读全文

posted @ 2013-02-19 23:02 御剑江湖的专栏 阅读(147) 评论(0) 推荐(0) 编辑
哪个效率更高?x=x+1, x+=1, x++

摘要: 解析:x=x+1最低,因为它的执行过程如下:(1)读取右x的地址。(2)x+1.(3)读取左x的地址。(4)将右值传给左边的x(编译器并不认为左右x的地址相同)。x+=1其次,其执行过程如下:(1)读取右x的地址。(2)x+1.(3)将得到的值传给x(因为x的地址已经读出)。x++效率最高,其执行过程如下:(1)读取右x的地址。(2)x自增1。答案:x++效率最高。 阅读全文

posted @ 2013-02-19 22:49 御剑江湖的专栏 阅读(168) 评论(0) 推荐(0) 编辑
sizeof 各数据类型占空间大小

摘要: #include "stdafx.h" #include #include #include using namespace std; struct{ short a1; short a2; short a3; }A; struct{ long a1; short a2; }B; int main() { char *ss1 = "0123456789"; char ss2[] = "0123456789"; char ss3[100] = "0123456789"; int ss4[100]; char q1[] 阅读全文

posted @ 2013-02-19 21:47 御剑江湖的专栏 阅读(323) 评论(0) 推荐(0) 编辑
完成字符串拷贝(sprintf、strcpy 及 memcpy 函数)函数之间的区别

摘要: sprintf 可以进行额外的格式化strcpy 会复制直到出现 '' 为止,可能溢出strncpy 会复制一个以 '' 结束的字符串,但是如果字符串长度超过指定数量则被截断,但结果可能不包含 '' 表示结束memcpy 只负责复制指定数量的 bytes,不处理 '' 的情况memmove 在 memcpy 的基础上对 overlap 的情况进行了处理。这些函数的区别在于实现功能以及操作对象不同。strcpy 函数操作的对象是字符串,完成从 源字符串 到 目的字符串 的 拷贝功能。snprintf 函数操作的对象不限于字符串:虽然 阅读全文

posted @ 2013-02-19 21:25 御剑江湖的专栏 阅读(635) 评论(0) 推荐(0) 编辑