一、内容梳理
逻辑符
&&与(一甲全假) ||或(一真全真) !非
逻辑法则:
逻辑与运算中,一个为假则逻辑运算不再执行直接为假
逻辑或运算中,一个为真则逻辑运算不再执行直接为真
位运算符
&位与(全1则1,有0则0)
|位或(全0则0,有1则1)
^异与(相同为0,不同为1)
~取反(全都取反
>> <<
拓展:当a=12,b=10时,如何操作可使a=10,b=12
原码,反码,补码:
正数:不变,不变,不变
负数:符号位(左数第一位)为1,除符号位外全部取反,+1
如:
0000 0000 0000 0000 0000 0000 0000 0111 7补码
1000 0000 0000 0000 0000 0000 0000 1010 -6补码
0000 0000 0000 0000 0000 0000 0000 0010 7&-6
注意!!计算机中整数以二进制的补码形式进行存储和计算
~取反(计算流程):
10补码:0000 0000 0000 0000 0000 0000 0000 1010
~取反后的补码:1111 1111 1111 1111 1111 1111 1111 0101
还原到反码:1111 1111 1111 1111 1111 1111 1111 0100
还原到原码:1000 0000 0000 0000 0000 0000 0000 1011
转换为十进制:-11
输出
>>右移:右边舍弃n位或/2的n次方(遇到0.5
<<左移:右边补充n个0或*2的n次方
置一公式:a|(1<<n)
置零公式:a&(~(1<<n))
例题:以下程序升输出结果是()。
int main()
{
char x=040; //1 000 000
printf("%o(表示输出为八进制)\n",x<<1);
return 0;
}
A.100 B.80 C.64 D.32
关系运算符:> >= <= == !=
三目运算符(又称选择运算符)
- 表达式1?表达式2:表达式3:当1成立则输出2,不成立则输出3
赋值运算符:
运算符优先级
单算移关与 异或逻条赋
单目运算符: ~ ++ -- !
算术运算符: * / % + -
移位运算符: << >>
关系运算符: > >= < <= == !=
位与运算符: &
异或运算符: ^
位或运算符: |
逻辑运算符: && ||
条件运算符: ?:
赋值运算符: = += -= *= /= %=
标点符号:, ; [] {} () ...
分隔符:空格,tab,\n
- 变量,常量
- 变量:程序变化过程中会发生变化
格式:
存储类型:决定变量存储位置
数据类型:决定变量开辟空间大小
变量名:遵循标识符命名规则(详情在0702梳理)
标识符种类
Int:整形(字节大小4)
Char:字符型(1)
Short:短整型(2)
Long:长整型(8)
Float:单精度浮点型(4)
Double:双精度浮点型(8)
局部变量和全局变量区别
- 定义位置不同,一个在函数内部,一个在函数外部
- 初值不同,一个初值为任意随机数值,另一个为0
- 储存位置不同,一个存储在栈区,另一个存储在全局区
- 生命周期不同,一个与当前函数共存亡,另一个与整个程序共存亡
- 作用域不同,一个只在当前函数范围内起作用,另一个在整个程序范围内
- 常量:程序变化过程中不会发生变化
宏定义:
格式:#define 宏名(一般用大写与普通变量区分) 常量值/表达式/代码段
注:先原样替换再计算
例如:
一些补充:
二、题目
输出结果为1
K =N*N*5=M+M*M+M*5=5+5*5+5*5=55
选C