1.常量不可以被赋值,eg:x=5=4+1(X)
2.++k和k++含义不一样,++k是先让k的值自增加1(此时k的值改变),而k++是先取k的值,再将k的值加1(此时k的值仍然没有改变)
3.不能将变量和常量赋值给表达式
4.关于逗号表达式的注意事项
C语言提供一种用逗号运算符","连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。
a.一般形式
表达式1, 表达式2, ……, 表达式n(中间不表达式不能隔空)
运算顺序:自左向右,依次计算
ps:c=(a+=++b,b+=4)和c=(a-=++a),(a+=b,b+=4),对于第一个c的值会赋给逗号最右边的值。而第二个则只会赋给第一个括号的值
5.关于按位取反
首先搞懂 “反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。
取反:0变1,1变0
反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)
按位取反:求其反码,最后求其补码(计算机内二进制数都以补码存在)
正数的反码和补码就是原码本身。
负数的反码符号位不变,其他各位取反。
负数的补码是反码+1。
补码的补码就是原码。
0按位取反后的值是多少?
eg:i为int类型 通常占4个字节
0的原码:0000 0000 0000 0000 0000 0000 0000 0000
取反: 1111 1111 1111 1111 1111 1111 1111 1111(判断是+0还是-0)
最高位是1所以是负数,求其原始数据,方法是
再次取反加1(符号位不变)
取反: 1000 0000 0000 0000 0000 0000 0000 0000
加1 1000 0000 0000 0000 0000 0000 0000 0001
所以是 -1
关于取反的小结论:
1. 所有正整数的按位取反是其本身+1的负数
2. 所有负整数的按位取反是其本身+1的绝对值
3. 零的按位取反是 -1(0在数学界既不是正数也不是负数)
6.实形变量不能存放整形数
7.scanf和printf是函数,不是语句!!!
8.位运算的类型:& (按位与)0, |(按位或),^,~(按位取反),<<,>>.
9.sizeof不是一个函数,而是一个操作符!其作用是返回一个对象或者类型所占的内存字节数
eg:sizeof(double)是一个整形表达式
10.逻辑表达式
在C语言中,逻辑运算符有&&、||、!
&&
表示“与”的意思,需要两端的表达式的值都为true,该式的值才为true。||
表示“或”的意思,两端的表达式的值只要有一端为true,该式的值就为true。!
表示“非”的意思,将该式的真值换成相反的真值,即false和true互换。
11.条件表达式(唯一的三目运算符)
它的一般形式为:<表达式1> ? <表达式2> : <表达式3>;
"?"运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。