前言:首先,我的博客主要记录的是部分容易遗忘,但是比较重要或是值得了解的知识点。很多基本概念我并不会阐述,所以它更适合用来复习;其次,这些知识点是从我自己的角度出发整理的,因此我认为的重点可能和你不同,有的内容可能不完整或有错误,希望大家多多包涵,如果能指出我的错误,我会非常感激!最后,我整理的知识点可能会比较琐碎,但在以后知识点多了之后我可能会进行整理。
1.小数除法
注意在进行小数除法的时候,两个相除的数至少有一个是小数,否则功能无法正常实现。在使用printf打印的时候默认打印小数后6位
2. 取模操作
负数求模:负数求模的符号仅由第一个数的正负决定,第二个数的正负不影响取模的正负
取模操作适用范围:只能用于整型,浮点数不能取模
3.循环和分支语句中注意事项
(1)switch
switch语句中括号、case和default中选择的内容只能是整型或枚举类型,枚举类型可以看作特殊的常量,char类型也可以视作整型家族,因为本质上char在内存中存储的是它的ASCII码值,这个值算作一个整型。
(2)for、while、do while
for(表达式1;表达式2;表达式3)
在for的使用中要注意当执行表达式1后,会进行一次表达式2判断,为真后才进入for内部。虽然平时我们写代码意识不到这一步,因为没人会写出这么一段无用的代码,但是这个逻辑要清楚。
for、while内部执行次数比条件判断次数少1
do while循环一定是先执行do中的内容,再进行while判断,即使你发现一开始while中表达式的结果就为假。这也是区分while,for的关键部分。
do内部执行次数和while判断次数相同。
循环和分支的判断遵循0为假,非0为真,所以在判断时可以合理利用单目操作符和逻辑操作符简化
如!a相当于a==0
(3)go to
go to语句最好在需要连续跳出多个循环时使用,正常情况下不要用,能用其他方式解决的就不要用go to语句,因为这会使我们的代码逻辑变复杂。
4.区分连续赋值和逗号表达式的执行逻辑
连续赋值是从右向左的,靠右边的表达式的值依次向左附
逗号表达式是从左到右依次执行,逗号表达式的结果是最后一个表达式的结果,注意每个表达式都要执行
5.左移操作符和右移操作符细则区分
左移操作符执行规则:左边抛弃,右边补0。
因此对于负数来说,左移后就变成了正数(有且只有这一种可能)
右移操作符的执行规则就比左移操作符的要复杂,有两种操作方式;
(1)逻辑右移:左边用0填充,右边丢弃(类似于左移操作符)
(2)算数右移:左边用该值的原符号位填充,右边丢弃。这意味着在算数右移的规则下,负数右移后还是负数,而逻辑右移下,移后的数一定是正数。
对于绝大部分编译器来说,都是采用算数右移,仍有少部分编译器采用逻辑右移。
但是对于所有编译器来说,左移规则相同。这里一定要注意区分!
6.printf的重要操作技巧
(1)左右对齐
在打印多个数字时,难免会出现第一排是一位整数,第二排是两位甚至三位整数。如果不做任何处理,后续打印的数字会无法对齐,因此使用printf("%3d")或printf("%-3d"),3表示最小位宽,使打印的数字右对齐或左对齐,默认右对齐,前面加上负号变成左对齐
如果打印的位数超过你自己在前面%d间写的数字,则正常打印,但数字间的对齐效果受影响
打印字符串同理,注意空格也被视为字符
(2)限制小数位数
无论以%f还是%lf形式打印,输出的结果默认是6个小数位,用printf("%.2f")限制小数位,这里只会打印小数点后2位。
(2)和(1)可以合用,printf("%5.2f")的5用于对齐,.2用于限制小数位数,当然,你也可以加上负号让它变成左对齐
但要注意,小数点会被视为数字占掉一位
如31.41在使用printf("%5.2f")打印时最前面不会有空格
7.scanf读取字符和字符串规则
scanf在单独读取字符时,可读取空格
在读取字符串时,开头的空格自动跳过,在遇到下一处空格时自动停止
如" Hello World!"在读取时存入的是"Hello"开头无空格,后面的空格之后的内容不读取。
8.重要ASCII码值
字符A~Z从65~90
字符a~z从97~122
大写字母+32等于小写字母
数字0~9的ASCII码值是48~57
换行\n的ASCII码值是10
ASCII码值从0~31这32个字符不可打印,它们用于实现特定功能
9.重要占位符
%d 十进制整数
%c 字符
%s 字符串
%f 和%lf 浮点数
%p 指针
%u 无符号整数
%zd size_t类型
%o 八进制整数
%% 输出一个%
%x 十六进制整数
10.理解指针概念
首先我们要知道,CPU和内存之间有地址线连接,我们常说的64位平台即有64根地址线,32位平台则有32根地址线。每根地址线能够表示0和1,因此总共能储存2的64或32次方个地址。
以64位平台举例,每个地址由64个bit组成,即8个字节,因此储存64位平台的地址需要的指针变量的大小是8个字节。同理,32位平台需要4个字节。
严格来说,我们所说的指针是指针变量,真正的指针其实是地址,因此我们要区分日常用语和概念的定义的区别!
本文概述了编程中的小数除法、取模操作注意事项、循环和分支语句的使用、printf和scanf函数的技巧、ASCII码值以及指针概念的基础知识,旨在帮助读者复习和理解这些容易忽视但重要的知识点。
501

被折叠的 条评论
为什么被折叠?



