C语言----操作和注意点(待补充)

本文详细介绍了C语言中scanf函数的使用,包括其返回值与EOF的关系,以及如何利用getchar()清除输入缓冲区。还讨论了随机数生成、动态格式化输出字符串的方法,并探讨了指针类型的typedef与#define的区别。此外,文章提醒读者注意数组越界问题,指出系统对越界的检查并不总是报错。
摘要由CSDN通过智能技术生成

操作

~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赋值,从而控制输出格式。


#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a,b;
int_ptr c,d;
以上代码只有b不是指针类型
int*a,b==int*a;int b(#define是替换,只有a与*结合)
而对于c和d(typedef是重定义,a,b都变为指针类型)

(a+b)/2a+((b-a)>>1)等价


注意点


越界不一定会报错,系统对越界的检查是一种抽查,即对数组设置标志位,越界一般无法检查,越界如果修改到标志位才会检查报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值