①:sizeof求变量字节数时,可省略括号:sizeof(a)=sizeof a;但是对数据类型或其他求字节数时不可省略:sizeof int是不对的!
②:c语言中,int默认是signed int(有符号),只不过signed通常省略不写。unsigned要求写,那在二进制存储时,最高位是符号位:1为负,0为正。
③:负数在内存中存储时都是存储的二进制补码,正数存的其实也是补码,但是正数的原码、反码、补码都是一样的。原码到反码是这样的:最高符号位保持不变,后面的所有位都按位去~(按位取反),从反码到补码是这样的:反码+1就是补码。虽然存的都是补码,但是打印和使用时用的都是原码。举个例子:
a:00000000 00000000 00000000
b:11111111 11111111 11111111(以该串二进制数,以补码的形式存储起来)
b-1:11111111 11111111 11111110(上行的补码变成中间变量:反码)
打印:10000000 00000000 00000001(上行的反码要变成可以打印和使用的原码),而这串二进制数表示的正是-1。
④:++;--的前置和后置,前置:先++在赋值,后置:先赋值再++。
⑤强制类型转换:
运行这个会出错:
而加上强制类型转换:
⑥:关系操作符有:<,>,<=,>=,!=,==
⑦:逻辑操作符:&&(逻辑与);||(逻辑或)
⑧:条件操作符:exp1?exp2:exp3;(判断exp1是否为真,若为真,则整个条件操作符返回exp2的值,否则返回exp3的值)
⑨:逗号表达式,暂时没讲
⑩:下标引用、函数调用、结构成员:[];();.;->;四个东西。
arr[4],就是在调用数组arr的第四个元素。函数调用,举个例子:(求两数之和,先自定义函数),这里主函数里头的Sum就是去调用前面的自定义函数。