能直接访问硬件的语言:c、汇编、c++
不同款编译器:看不同的标准
同一款编译器:看编译器支持的标准
IDE:集成开发环境
SVN/git版本管理器(git集成了内核)
SVN在ubuntu下用
c89/c99运用
c11微软编译器下用
运算符和表达式:
i++使用结束之后再自加
i=2情况下
num = (i++) +(i++) +(i++) + (i++);
相当于
num = i+i+i+i; 8 2+2+2+2
i = i + 1 做了4次 i=6
num = (++i) + (++i) + (++i) + (++i);
i = i + 1; i = 3
i = i + 1; i = 4
num = i + i; 8
i = i + 1; i = 5
inum = num + i; 13
i = i + 1; i = 6
num = num + i; 19 4+4+5+6
i = i *((i++) + (++i)); 19
i = (i++) + (++i) + (i++) + (++i); 3+3+3+4+2 15
i = (++i) + (i++) + (++i) + (++i); 3+3+4+5+1 16
①函数传参从右边开始传参
func(i++,++i); // (3,i)
②i++替换成数值 ++i替换成变量(名)
③c语音结束标志; \ , \ 函数的括号(
func(++i,i++); // (i,2)
func(i++,++i,i++,++i,i++); // (6,7,4,7,2)
func(++i,i++,i++,++i,i++); // (7,5,4,7,2)
func(i++,i++,++i,i++,++i); // (6,5,7,3,7)
短路与、短路或
异或~ 1和0为1 1和1为0
位运算处理无符号数
mask 掩码
无符号 左移拿0补 右移拿0补
有符号 左移拿0补 右移拿符号位补
按位与 通常对某些位清零或保留:
清零特定位(mask中特定位置0,其他位为1,s = s & mask)
取某数中指定位(mask中特定位置1,其他位为0,s = s & mask)
按位或 将某些位置1,其他位不变(mask中特定位置1,其他位为0,s = s | mask)
异或 使特定位取反(mask中特定位置1,其他位为0,s = s ^ mask)
扩展:
不采用中间变量变换a和b的值
a = a ^ b;
b = a ^ b;
a = a ^ b;
(不受大数影响)
或
a = a + b;
b = a - b;
a = a - b;