C语言基本知识简单回顾
本文主要内容:
1. C语言的基本组成
2. 全局变量、局部变量的初值问题
3. 数据类型及其长度
4. 运算符及其优先级
5. 选择结构
6. 循环结构
7. 什么是函数,函数的三要数
下翻前停顿一会想想,你很清楚其包含的内容吗?
OK想好了,我们继续看。
1. C语言的基本组成(共五部分):
预编译指令(即以#号开头的部分)
example: #include <stdio.h>
#define PI3.14
数据(常量或变量的集合)
程序是数据和指令的集合
example: int a
123
0xff
指令(通俗即表达式语句)
example: a++
函数(程序中最小的功能模块)
所有的指令除了定义初始化可以放在函数外,其他必须在函数体内
example: int swap(int a, int b)
注释(对代码的解释)
不知道多少小伙伴没有写注释的习惯!!!
example: //这是一个注释
/*这也是一个注释*/
2. 全局变量、局部变量的初值问题
首先说结论:全局变量在定义时值为0, 局部变量值为随机。
以下为截取一个问题及回答
原文:https://stackoverflow.com/questions/3373108/why-are-static-variables-auto-initialized-to-zero
https://blog.csdn.net/LinuxTiger/article/details/26835239?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase
3. 数据类型及其长度
C语言数据类型分为四大类:
(1)基本类型:
整型数据类型:
(signed/unsigned)char
(signed/unsigned)int
(signed/unsigned)short
(signed/unsigned)long
浮点型数据类型:
单精度 float
双精度 double
注:char为8位整型,有符号-128 ~ 127,无符号0 ~ 255.只是对应了一张ASCII码表,因此表示字符型(Linux下man ascii 即可查看次表); int 8/16位机中为16位,32/64位机中为32位;short 为16位;long 8/16/32位机中为32位,64位机中为64位; float 为32位;double 为64位。
(2)枚举类型:本质也是算数类型,列举可取具有离散性质的数据
example:日期可取1-30
(3)空值类型:即void类型,表示次变量无值可取(无值并非为0)
void用法含义:
a. 作为函数返回值类型,说明无返回值
b. 作为函数声明时作为参数类型及列表,说明无参数
(4)构造类型:包括以下几种类型
指针、数组、结构体、共用体、函数类型
4. 运算符及其优先级
(1)算数运算符:++ --
* / %
+ -
注: 整形与整形运算结果依然是整形
整形与浮点型运算结果是浮点型
浮点型与浮点型运算 结果是浮点型
% 取余的两个操作数都只能是整形数据 不可以是小数
(2)赋值运算符:*= /= %= += -= = ...
(3)关系运算符:== != > < >= <=
(4)逻辑运算符:! && ||
注:在逻辑表达式中存在惰性运算,即当一个逻辑表达式中&&前的内容为假则不继续进行判断及运算,当||前的内容为真也不继续进行后面的判断及运算
example:int m = 1;
int p = 0;
int a = (1||(m=-1))&&(0&&(p=1)&p);
结果:m = 1; p = 0; a = 0;
(5)条件运算符:格式 表达式1 ? 表达式2 : 表达式3
含义:若表达式1为真则执行表达式2,否则执行表达式3
更请参考:
https://baike.baidu.com/item/%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BC%98%E5%85%88%E7%BA%A7/4752611?fr=aladdin#3
5. 选择结构
(1)if...else if....else...
这个很简单不用多说,但在此提一点:若if或else if的的判断中有一个生效则选择结束。
(2)switch...case...default...
基本形式:
switch(整形表达式)
{
case 整形常量表达式1:语句块1;
case 整形常量表达式2:语句块2;
case 整形常量表达式3:语句块3;
.....
case 整形常量表达式n:语句块n;
default: 语句块 n+1;
}
执行逻辑:
即语义
第一步:求解整形表达式的值
第二步:表达式的值与整形常量表达式1的值比较,如果相等则从整形常量表达式1后面的语句块处开始执行直到遇到break 或者 switch做完为止,如果不相等则继续往下一步走
第三步:表达式的值与 整形常量表达式2的值比较 如果相等 则从整形常量表达式2后面的语句块处开始执行 直到遇到break 或者 switch做完为止如果不相等则继续往下一步走
....
第n+1步:表达式的值与 整形常量表达式n的值比较 如果相等 则从整形常量表达式n后面的语句块处开始执行直到遇到break 或者 switch做完为止如果不相等则继续往下一步走
第n+2步:找完了没找到就进入 default 进行执行
example:
switch(day)
{
case 1: printf("周一");
case 2: printf("周二");
case 3: printf("周三");break;
case 4: printf("周四");
case 5: printf("周五");
case 6: printf("周六");
case 7: printf("周日");break;
default: printf("不在范围");
}
day取以下值,结果是什么?
1. 周一周二周三
3. 周三
0. 不在范围
6. 循环结构
(1)while循环结构
while(表达式)
{
...
}
语义:求解表达式,若为真执行语句体否则结束循环。
(2)do while循环结构
do{
...
}while(表达式);
语义:执行语句块,求解表达式,若为真则执行语句块否则退出循环。
注意:
无论while还是dowhile都是先判断后循环只是dowhile至少做了一次。
(3)for循环结构
for(表达式1;表达式2;表达式3)
{
...
}
语义:求解表达式1;求解表达式2,若为真进行下一步否则退出循环;执行语句块;求解表达式3;继续求解表达式2。
7. 什么是函数,函数的三要数
(1)定义: 是将特定功能指令封装在一起的集合(语句组成的集合)。
(2)三要素: 函数返回值类型
函数名
函数参数类型及列表
虽然我们都知道该怎么定义函数,但是也得知其然之前所有人。
若有错误,请指正谢谢!