首先明确:C语言与Java有部分相似之处,在Java开篇之前需要对C语言部分核心基础进行复习总结,以此算是忙完营销毕业论文后为了回到编程思维做一个准备工作。
目录
9. (乘除加减比较、逻辑与逻辑或、赋值)运算符的优先级顺序
Java和C语言的语法方面部分相似与不同之处
1. 区别
1. Java采用Unicode字符集,C语言通常采用的是ASCII字符集。
2. 在C语言中,char类型占一个字节,在Java中char类型占2个字节。
2. 相似
见后文。
一、main方法
Q:为什么需要main方法?
A:main方法即主方法、主函数,它标志程序运行时的入口点。main方法从头到尾标志着程序的全局开始和结束。
Q:main方法要注意什么?
A:首先一个工程有且仅有一个main函数,但一个工程可以有多个.c的文件。其次,main函数的位置可以出现在任意位置。最后,要注意返回值,一般为0。补充一句,C语言中main函数可以传参,但涉及到命令行参数和进程,若以后深入学习C语言可再学习。
int main()
{
return 0;
}
void main()
{
return;
}
二、程序执行与结束
Q:程序执行在什么时候开始?在什么时候结束?
A:主程序从main的第一个{ 开始,最终结束是在最后一个} 。内部的局部程序代码块都用{ } 括起来,并且以大括号为起始位置。
Q:变量如何理解?
A:变量可以定义在main函数之外、之内或者其他的.c文件里,变量分为全局变量和局部变量。全局变量的作用域是整个工程。局部变量的作用域是变量所在的局部范围,比如某个if语句。变量的生命周期是变量的创建和销毁之间的时间段。
三、字符变量为何需要ASCll表
Q:字符变量为什么需要ASCII表?
A:在ASCII表中,一个整数(十六进制)是一个字符的映射。因为计算机是二进制,只存0和1,所以要把字符映射成计算机中的整数,才能进行运算,简而言之计算机底层用这个整数代表字符。
(注:图片来源于网络;ASCII,即美国信息交换标准代码,等同于国际标准 ISO/IEC 646。)
(全部ASCII表可见《史上最全ASCII码对照表0-255(%d)》)
Q:常用ASCII值要注意的有哪些?
A:有以下几个方面:
(1)退格(8)、制表(9)、换行(10)、回车(13)。不同应用程序对文本影响不同。
(2)空格(32)。
(3)阿拉伯数字从 0 到 9 分别对应 48 到 57。
(4)大写英文从 A 到 Z 分别对应 65 到 90。
(5)小写英文从 a 到 z 分别对应 97 到122。
(6)大小规则:空格 <数字 <大写字母 <小写字母。
(7)ASCII码最左边是最高位(b7),最右边是最低位(b0),第八位(b7)用作奇偶效验位。奇偶效验用于检验代码传送正确性,分奇效验和偶效验。奇效验是指正确的代码一个字节中1的个数必须是奇数,否则在最高位添1。偶效验是指正确的代码一个字节中1的个数必须是偶数,否则在最高位添1。
四、基本数据单位
Q:计算机中存储的基本单位是怎样的?
A:位(比特位)、字节、字(字符)是计算机数据存储的单位。位是最小的存储单位,每一个位存储一个1位的二进制码,一个字节由8位组成。而字通常为16、32或64个位组成。
Q:用公式进行表达。
A:分为32位计算机和64位计算机:
(1)1字节 = 8 比特位
(2)32位计算机:1字(字符)= 4字节= 32位
(3)64位计算机:1字(字符)= 8字节= 64位
五、变量数据种类以及所占字节大小
Q:除了要注意在Java中char类型为2字节,C语言中char类型为1字节以外,其他的数据类型及大小都是多少?
A:见下图。其中大端字节序和小端字节序的产生来源于共用体类型,测计算机是大端字节序还是小端字节序可用共用体进行检测。
六、二进制、八进制、十进制、十六进制
Q:如何理解二进制、八进制、十进制、十六进制?
A:进制用来计数,有进制基数和计算规则两大要素,进制基数表示在表示数字时不可再拆分的数字,计算规则指的是满进借退的规则。二进制、八进制、十进制、十六进制的两大要素表如下所示:
进制基数 | 计算规则 | |
二进制 | 0 1 2 | 满2进1,借1当2 |
八进制 | 0 到 7 | 满8进1,借1当8 |
十进制 | 0 到 9 | 满10进1,借1当10 |
十六进制 | 0到 9 和 A 到F | 满16进1,借1当16 |
Q:二进制、八进制、十进制、十六进制如何互相转换?
A:可将其他进制先转换为十进制,然后进行互相转化。在n进制与十进制转化中,用n的次方公式进行运算。
Q:计算机存储的是二进制,二进制如何进行运算?
A:二进制数在计算机存储中,最高位是符号位,0表示正数,1表示负数。整数的二进制有三种表示:原码、反码、补码,计算机运算的时候都以补码的方式进行计算,需要注意以下几点:
(1)正整数的原码、反码、补码相同。
(2)负(整)数存储的是补码。补码 = 反码 + 1 ;反码 = 原码符号位不变 + 其他位按位取反
(3)计算机底层进行的二进制减法运算,实际上是加负数运算。
七、指针基础
Q:指针与内存有何关系?
A:首先要理解内存的含义:
(1)内存是电脑上特别重要的存储器,计算机中所有的程序的运行都是在内存中运行的。
内存分为一个个小的内存单元,每个内存单元的大小是1个字节。
为有效访问到内存的每个单元,内存单元具有编号,这些编号被称为该内存单元的地址。
(2)内存是如何编号的:
32位—32根地址线—物理线—通电—1/0 2^32根地址线 (个内存单元)
64位—64根地址线—物理线—通电—1/0 2^64根地址线 (个内存单元)
然后要理解指针的含义:
(1)指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
(2)要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。
最后我们可以得出,C语言可以通过指针去访问内存中某一块的内容。
Q:指针如何声明变量?
A:有以下几种情况:
八、语法、定义变量、语句(选择、循环、嵌套调用)
Q:通过C语言需要掌握一些基础语法,并学会定义变量,如何定义变量?
A:首先是语法修饰的常量(与变量区别开来):
const int num = 10;//const修饰变量将变为“指定不可反”常量。
#define MAX;//define自定义标识符常量。
enum 枚举类名 //(SEX)
{
类型1 //(MALE)
类型2 //(FEMALE)
类型3 //(SECRET)
};//枚举常量默认从0开始,每增加1。可赋初值。
其次是定义变量
//数据类型 数据名称 = 初始值; eg:
int a = 1;
char s ="ha";
Q:关于必要掌握的语句,选择、循环、嵌套调用如何理解?
A:以下是关于选择结构和循环结构的语句图(后文有详解):
关于函数嵌套调用可见下图:
首先是自定义函数及调用和函数嵌套调用:
其次是函数链式访问和函数递归:
九、Vc6.0、VS快捷键
Q:不同的程序快捷键不同,Vc6.0 和 VS 的快捷键分别是什么?
A:Vc6.0 快捷键可参考:VC6.0 快捷键
VS 快捷键可参考:VS 快捷键
熟能生巧,要多用自然记下。
十、与Java相似的语法
1. 代码块放在大括号内
代码块要放入大括号内,不同的语句块在不同的函数块要放入正确的大括号。
2. 语句以分号结束
编程时要记得最后以半角符号的“;”结束。
3. 函数调用的语法
函数调用参见上文。
4. 赋值运算符
赋值运算符为:= 。
逻辑判断运算符为:== 。
5. 赋值运算表达式
赋值运算时将等号右边的符号赋值给左边。
int a = 1;
int b = 2;
int a = 3;
int b = 4;
//最终a是3,b是4
6. 以“0x”开头来表示十六进制数
十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
其中A-F分别表示十进制数字10-15,十六进制数的技术规则是“逢十六进一”。
通常对十六进制数的表示,可以在数字的右下角标注16或H,但在C语言中是在数的前面加数字0和字母X即0X来表示。例如,12AF在C语言中表示为0X12AF。
7. &、|、^、!、&&、||
&、| 和 ^ 是位操作符, !、&& 和 || 是逻辑操作符,要注意分清。
位操作符 | &(按位与) | 两个位都为1时,结果才为1。即:有0则为0 |
|(按位或) | 两个位都为0时,结果才为0。即:有1则为1 | |
^(按位异或) | 两个位相同为0,相异为1 | |
逻辑操作符 | !(逻辑反操作) | 逻辑反操作 |
&&(逻辑与) | 遇假则停 | |
| | (逻辑或) | 遇真则停 |
8. 三目运算符
三目操作符又叫条件操作符:
exp1?exp2:exp3
exp1成立,exp2计算,整个表达式的结果为exp2的结果。
exp1不成立,exp3计算,整个表达式的结果为exp3的结果。
9. (乘除加减比较、逻辑与逻辑或、赋值)运算符的优先级顺序
(注:图片来自于网络)
运算符优先级口诀:单目算术位关系,逻辑三目后赋值。
单目:+ +、- -
算术:+、-、*、/、%
位:位移运算符:<<(左移位)、>>(带符号右移位)、>>>(不带符号右移)
关系:<、>、<=、>=、==
逻辑:&&、||、!、&、|、^
三目:三目运算符(又称为三元运算符)A>B? x:y
赋值:=
10. 部分语法
(1)if
(2)for
首先是基本用法与break用法:
其次是continue与两个变形:
(3)while
(4)do-while
(5)switch-case
(6)break与continue
break表示永远终止,continue表示跳过本次操作。
要注意:continue不能在do while中使用。
-----------咻---------------------咻---------------------咻-------------------咻--------------------咻----------------------
下次不许拖拖拉拉。