C语言的前置细碎知识

C语言的前置细碎知识
C语言前置细碎知识C语言常见概念main函数字符和ASCII字符串和\0转义字符数据类型和变量数据类型变量算术操作符-*/%赋值操作符单目操作符强制类型转换scanf和printf介绍printf常见占位符输出格式限制长度控制小数点位数显示正负号输出部分字符串scanfC语言常见概念好久没有看C语言决定这个暑假在学新的内容先将前面的复习一下并补缺之前没有这里的笔记。同时这也是第一次使用Markdown进行写文章有点不熟练多多包涵main函数main函数是程序的一个入口也可以叫做主函数前面的int代表返回整形的类型值与return 0相呼应main函数有且仅有一个。字符和ASCII字符是指键盘敲的任意键每个键都是一个字符。它是由单引号括起来的。每一个字符都有一个ASCII值以方便字符存储在内存之中。ASCII需要着重知道的是常见的ASCII值:A~Z-65~90a~z-97~1220~9-0~9\n-10可以发现大写字母和小写字母相差32同时0-31是不可打印字符。字符串和\0字符串是指有一系列字符组成的一串字符用双引号括起来。当然字符串也可以是一个字符组成的的字符串。字符和字符串主要的区别是二者是被单引号还是双引号所包括。\0是一个转义字符是隐藏在字符串末尾的一个字符它是字符串的结束的标志。转义字符转义字符作用\r让光标回到开头?表示问号防止在书写多个问号时被解析成三字母词\n换行操作’表示单引号表示双引号\表示一个反斜杠\\b退格键光标退回一个字符但不删除这个字符\t移动到下一个制表符制表符一般是4/8的倍数\ddd表示一到三位的8进制数字\xdd表示两个16进制的数字\0字符串结束的标志%%表示一个百分号数据类型和变量数据类型变量变量的创建数据类型变量名变量名是由字母、数字、下划线组成的同时数字不能作为开头。变量的类别分为全局变量和局部变量。遵循局部变量优先原则。创建变量名的要求变量区分大小写。变量不能是关键字。变量名尽量有意义算术操作符-*和我们平常数学使用的一样。/这个稍有点不一样如果除号左右两边的操作数均是整数的话最后的结果就是整数相当于取整函数的意思如果左右操作数至少有一个是浮点型那么最后的结果就是浮点型。%取模运算要求左右操作数必须是整数运算就是取余。当左右操作数中有负数时余数的正负要看看左操作数左操作数是正那么余数就是正左操作数是负那么余数就是负。赋值操作符操作符即为就是把右边的值赋给左边的值。int a 10;//初始化 a20;//赋值连续赋值abc3;//前提是已经初始化好a,b,c复合赋值a3;//等价于 aa3;单目操作符前置运算和后置运算。前置运算是指a/- -a,规则是先计算后赋值。后置运算是指a/a- -先赋值后计算。inta10;intb0;intc0;ba;printf(%d\n,a);//11printf(%d\n,b);//10ca;printf(%d\n,a);//12printf(%d\n,c);//12强制类型转换格式要强转为的数据类型变量inta10;floatb3.2;a(int)ab;//这里ab是浮点型但是要赋值的a是整型需要将浮点型强转为整型scanf和printf介绍printfinta0;printf(%d\n;a);常见占位符占位符表示%d十进制整数%u十进制无符号int类型%ld十进制 long int 类型%hd十进制short 类型%lu十进制无符号long int 类型%lld十进制 long long int 类型%o八进制整数%x16进制整数%c代表字符%s字符串%f表示单精度浮点型%lf表示双精度浮点型%Lf表示 long double 类型%p代表地址%zu代表size_t 类型输出格式限制长度限制的是最少长度。inta123456;intb123456;intc1234;printf(%d\n,a);//123456printf(%5d\n,b);//123456printf(%5d\n,c);//_1234printf(%-5d\n,c);//1234_当要输出的数字长度大于要求的限制长度那么就要原样输出。当要输出的数字长度小于要求的限制长度那么就要补空格。这就分左对齐还是右对齐了。%-5d要求左对齐%5d要求右对齐。代码中最后两行的结果真实中并不代下划线只是为了清晰表达是补的空格而使用的这种方法。控制小数点位数inta4.5678;printf(%f\n,a);//4.567800printf(%.2f\n,a);//4.56printf(%3.2f\n,a);//4.56小数字点后面小数字可以用来限制小数点的位数同时也可以结合限定宽度来使用。显示正负号inta10printf(%d\n,a);//10printf(%-d\n,a);//-10可以通过在百分号的后面加上正负号来表示这个数的正负。输出部分字符串printf(%.5s\n,abcd);//_abcd%.[m]s其中[m]为一个数字即限定的宽度。scanfinta0;scanf(%d,a);与printf较为类似均分为两个参数。左边为占位符右边是要输的值。不同的是printf是将值输出到屏幕上而scanf是将值输入到计算机内存里同时第二个参数是必须要加取地址符号。返回值是成功读取的次数。若在读取之前发生读取错误或者是读到文件末尾就会返回EOF(-1)。scanf 除了%c 会自动忽略空白字符。说一个我新见到的占位符%[ ]在方括号内指定一组字符串不匹配就会停止。scanf 是不会检测字符串是否超出了数组长度。所以通过加上限定来控制数组防止溢出。charname[10];scanf(%10s,name);赋值忽略符。用户可能会输入不符合规定的字符。例如下方代码如果输入的是2026-7-5那么会被正确解析如果输入的是2026/7/5,那么就不会被正确解析就会停止。因此提供了赋值忽略符*来防止出现这种错误。只需要将*放在占位符百分号后面就可以了。intyear0;intmonth0;intday0;scanf(%d-%d-%d,year,momth,day);scanf(%d%*c%d%*c%d,year,momth,day);//加了赋值忽略符要想结束scanf可以按三次ctrlz来结束scanf。