一,EOF的含义
咱们用一道例题来解释吧
我们可以知道EOF的含义主要是在scanf函数在调用失败的时候,读取失败的时候,会返回EOF
但EOF究竟是什么呢?
即在这道题中IQ=EOF为停止循环的意思
在 while循环中‘1’是死循环,‘-1’则是 停止循环,这就能很好地理解EOF的意思了
二,操作符
1)单目操作符
主要有:! 非 逻辑反操作,- 负值,+ 正值,&取地址,sizeof(不是函数)操作数的类型长度,以字节为单位
~ 按位取反(包括符号位),-- ++ 前置 后置-- ++ ,*简接访问操作符(解引用操作符), (类型) 强制类型转换
!非操作符:
同样
一个变量的前面jiashang '!'后原来为假便变为真,真就变为假!!
- 负值,+ 正值:
与正常的+ -一样表示 -表示负数和减法 +表示加法和正数
sizeof:对操作数的类型长度(以字节为单位)
有很多人不了解sizeof和strlen的区别
注意:sizeof(...)是 运算符,而不是一个函数:
strlen(...)是函数,要在运行时才能计算 参数必须是字符型指针(char*), 且必须是以'\0'结尾的。
~ 按位取反(包括符号位):对一个数的二进制位进行按位取反
0000 1111可表示为0x0f 但 0x0f~=0xf0 0xf0=1111 0000
即将二进制位由1->0 0->1
-- ++ 前置 后置-- ++:前置、后置++/--
本身的性质 联合的运用
前置++;
后置++:
这两种加法对a都会影响!!
后置/前置--与后置/前置++相同 这里不举例子
强制类型转换:
再代码编写过程中,含有小数的数字量系统会自动视为double型
如图,a定义为整形但a却对于3.14,系统可能出现警告
但如果我们在a前面加上(int),便强制a为整形,小数点后面的将会直接忽略
2)关系操作符
主要包括’>‘ '<' '>=' '<=' '==' '!='
用于判断两个数的大小关系(两个数必须是能直接比较的数)
如:a>b 即为a大于b
a<b a小于b
a>=b a大于等于b
a<=b a小于等于b
a==b a对于b (主要用于函数中:if 等语句)
a!=b a不等于b
3)逻辑操作符
主要有 &&逻辑与 ||逻辑或
他们只关注真和假
逻辑与:相当于and 和
只有当两个条件都满足的时候才为真
逻辑或:相当于 or 或
两个条件满足一个便为真
4)条件操作符(三目操作符)
表达式为:表达式1?表达式2:表达式3
意思为:如果表达式1的结果为真则按表达式2计算表达式3不算,表达式2的结果为整个表达式的结果; 如果表达式1的结果为真假则按表达式3计算表达式2不算,表达式3的结果为整个表达式的结果;
5)逗号表达式
表达式:(表达式1,表达式2,.......,表达式n)
逗号表达式,表达式会从左往右依次计算,整个表达式的结果为最后一次计算的结果
三,关键字
1)typedef
作用:类型重定义
我认为typedef和#define的用法很像
只是顺序的问题
2)register
作用:存储
//如果一个变量高频的使用,建议放在寄存器里面
寄存器的优点就是 速度快 造假高 空间小
3)static
在c语言中,static是用来修饰变量和函数的
1.修饰局部变量-称为静态局部变量
2.修饰全局变量-称为静态全局变量
3.修饰函数-称为静态函数
//大家可能都认为输出的会是6-16 但是a是在void text()中的加入了int main()会自动销毁,所以当while循环再次加入text会重新创建时a依然是5 然后再加1,执行10次
我们可以看出局部变量是加入他的范围创建,出了他的变量销毁
但当static修饰时
static修饰局部变量的时候,局部变量就变成了静态的局部变量,出了局部的变量,不会销毁,下一次加入函数依然存在。其实是因为:static修饰的局部变量是存储在静态区的
//静态区的特点就是出来他的范围是不销毁的
啦啦啦到这里就结束了:欲知后事如何,请听下次文章