day03
一、运算符
1.1 逻辑运算符
&& 逻辑与 一假则假
|| 逻辑或 一真则真
! 逻辑非 非真则假,非假则真
截断法则:
逻辑与运算中,前边的表达式结果为假,后边的表达式不再执行,直接返回假
逻辑或运算中,前边的表达式结果为真,后边的表达式不再执行,直接返回真
1.2 位运算符
&,|,^,~,<<,>>
& 位与 有0则0
| 位或 有1则1
^ 异或 相同为0,不同为1
~ 取反 1---->0 0------>1
计算机中,整数以二进制的补码形式存储,计算
原码、反码、补码
原码 | 反码 | 补码 | |
正数 | 相同 | 相同 | 相同 |
负数 | 相同 | 除符号位外,其他按位取反 | 反码+1 |
int 4字节=32位 1字节=8位
符号位:最左边 0正数 1负数
如:
12:0000 0000 0000 0000 0000 0000 0000 1100
-12:1000 0000 0000 0000 0000 0000 0000 1100
<<左移
左移n位,右边补充n个0
例:
6<<2==24
公式:
6*2^2=24
-6*2^2=-24
>>右移
右移n位,最右边舍弃n位
例:
6>>2==1
公式:
6/2^2=1
-6/2^2=-2
置一公式:a|(1<<n)
置零公式:a&(~(1<<n))
1.3 关系运算符
>,>=,<,<=,==,!=
1.4 三目运算符 (选择运算符)
? : 表达式1?表达式2:表达式3;
意为:若表达式1成立,则表达式2,否则表达式3
如:
int a=5,b=9;
int c=a>b?a:b;
printf("%d\n",c); //9
1.5 赋值运算符
=,+=,-=,*=,/=,%=
例:a-=5; //a=a-5
1.6 运算符优先级
单算移关与 异或逻条赋
单目运算符: ~,+ +,--,!
算术运算符: *,/,%,+,-
移位运算符: <<,>>
关系运算符: >,>=,<,<=,==,!=
位与运算符: &
异或运算符: ^
位或运算符: |
逻辑运算符: &&,||
条件运算符: ?:
赋值运算符: =,+=,-=,*=,/=,%=
标点符号
英文 , ; [ ] {} () ....
分隔符
空格,tab,\n
二、变量
程序运行过程中会发生变化
格式:
存储类型(决定变量存储位置) 数据类型(决定变量开辟空间大小) 变量名
auto,static,extern,register int,char,float,short,long, (遵循标识符
double,signed,unsigned 命名规则)
名字 | 字节大小 | 取值范围(了解) | |
int | 整型 | 4 | -2^31~2^31-1 |
char | 字符型 | 1 | -2^7~2^7-1 |
short | 短整型 | 2 | -2^15~2^15-1 |
long | 长整型 | 8 | -2^63~2^63-1 |
float | 单精度浮点型 | 4 | -2^31~2^31-1 |
double | 双精度浮点型 | 8 | -2^63~2^63-1 |
printf("%ld\n",sizeof(long));//查看数据类型的大小
局部变量和全局变量的区别:
局部变量 | 全局变量 | |
定义位置 | 函数体内部 | 函数体外部 |
初值 | 未初始化,值是随机值 | 未初始化,值是0 |
存储位置 | 栈区 | 全局区 |
生命周期 | 同当前函数体共存亡 | 同整个程序共存亡 |
作用域 | 当前函数体内部 | 整个程序 |
三、常量
程序运行过程中不会发生变化
3.1 整型常量
八进制 十进制 十六进制
3.2 字符常量
字符 由' '包裹一个字符
字符串 由" "包裹,由'\0'作为字符串的结束标志
字符数组
3.3 浮点型常量
float
double
3.4 标识常量
宏定义:
格式:#define 宏名 常量值或表达式或代码段
宏名:一般用大写表示,为了和普通变量区分开
注意:先原样替换,再计算。
作业
输出结果为 1
答案是 C