c语言中(c=getchar())!=EOF与c=getchar()!=EOF的区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中(c=getchar())!=EOF与c=getchar()!=EOF的区别?相关的知识,希望对你有一定的参考价值。
两者怎么差别这么大,图1是前者 解释一下
区别在于c=getchar()!=EOF是先将从设备获得的字符与EOF进行比较,然后将比较的结果赋值给c变量。而(c=getchar())!=EOF是先将获得的字符赋值给变量c,然后再与EOF比较。出现这种区别的原因是不等于!=的优先级高于赋值运算符=的优先级。 参考技术A (c=getchar())!=EOF先读取一个字符给c,再判断c是否不等于EOF。而c=getchar()!=EOF是先将读取的字符与EOF做判断,看是否不等于EOF,再将判断结果(只可能是0或1)赋值给c。本回答被提问者和网友采纳
C语言----操作和注意点(待补充)
操作
~scanf()和scanf()!=EOF效果相同
scanf的返回值是输入值的个数
如果没有输入值就是返回-1
-1按位取反结果是0
EOF值为-1
数组传参习惯加上断言 assert(arr)
头文件<assert.h>
使用getchar()清除缓冲区
getchar()读取到EOF就结束读取(CTRL+Z)相当于EOF
输入函数是从缓冲区去拿,键盘输入缓冲区
srand((unsigned int)time(NULL));
printf("%d",rand()%100);
必须放到主函数
打印0-99的随机数(任何数%100都是0-99的数)
printf("%*.*s\\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。
这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
注意点
静态区
(static,全局
)3点作用
静态
,全局变量
只能在本变量的源文件
中使用- 存储在
静态数据区
的变量(全局变量
,静态变量
)会在程序刚开始运行时就完成初始化,也是唯一的一次初始化
,下图为例子
- 在静态数据区,内存中所有的字节默认值都是0x00
以上是关于c语言中(c=getchar())!=EOF与c=getchar()!=EOF的区别?的主要内容,如果未能解决你的问题,请参考以下文章