栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言预备知识

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言预备知识

目录

代码基本知识

计算机的组成:

内存单位

语言发展

数值数据 - 进制

二进制:0  1

十进制

八进制:一位8进制数据可以转换为3位二进制

十六进制:一位16进制数据可以转换为4位二进制

非数值数据 - 字符

c语言基础 - 词法符号

1、关键字(32个)

2、运算符

(1)按照 功能 分类

          算术运算

关系运算

逻辑运算

逻辑 - 将数据看作一个整体,只有真(1 / 非零数据)和 假(0)

 位运算

赋值运算

自增自减运算符 ++  、--

条件运算

求字节大小

逗号运算

强制类型转换

其他

(2)按照操作数分类

(3)运算符优先级

 3分隔符

 4标点符号


代码基本知识

 语句一般以 分号(;)作为结束标志

#include

int main()

{

        printf("hellon"); //一条打印语句,将"hellon"字符串打印/输出到屏幕/终端上

        //  n 换行

         return 0;  //一条语句

}

计算机的组成:

存储设备(寄存器(cpu内部,数量少,运行速度快)rom ram 内存(运行内存)外存(硬盘,U盘  磁盘))

运算器   进行运算

控制器   (cpu = 运算器 + 控制器)

输入设备(键盘  鼠标  话筒  摄像头  触摸板)

输出设备 (喇叭  显示器  打印机)

内存单位

1字节(byte/B)== 8位(bit)

1024B == 1kB

1024kB == 1MB

1024MB == 1G

1024G == 1T

语言发展

机器语言:二进制语言,只有 0 1

汇编语言:最接近机器语言,精简指令集

高级语言(C  C++  Java  python  ....)

数值数据 - 进制

二进制:0  1

    基数:2  (0  1)
    位权

0b1010      1*2^3 + 0*2^2 + 1*2^1 + 0*2^0  ==>  十进制:10

每一位数 乘上对应位权的和就得到对应10进制数据

十进制

   基数:10 (0  1  2  3  4  5  6  7  8  9 )

  1638   1*10^3 + 6*10^2 + 3*10^1 + 8*10^0

八进制:一位8进制数据可以转换为3位二进制

   基数:8(0  1  2  3  4  5  6  7 )

0123    1*8^2 + 2*8^1 + 3*8^0  ==>  十进制:83

十六进制:一位16进制数据可以转换为4位二进制

   基数:16(0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F)

0x123    1*16^2 + 2*16^1 + 3*16^0   ==>十进制:291

计算机只认识二进制,其他的进制是给人看的

计算机会自动将数据转换成10进制数显示出来

对于计算机来说:0b1101 和13 和015 和0xd 没有任何区别

十进制转换二进制:

1、除2取余(短除法)

2、凑数法: 8421

        8   4   2  1   (14= 8 + 4 + 2)

        1   1   1  0

3、计算机

         

非数值数据 - 字符

'a'    '@'

ASCII   -- 一个数字 对应一个字符

0    --  ''

10  --  'n'

32  --  '  '  空格

48  --  '0'

65  --  'A'

97  --  'a'

  

c语言基础 - 词法符号

关键字(32个)  运算符  分隔符  标点符号  标识符

1、关键字(32个)

标准(系统)规定好的一些有特殊含义的字符,32个

char           :声明字符型变量或函数

short          :声明短整型变量或函数

int              :声明整型变量或函数

long           :声明长整型变量或函数

float           :声明浮点型变量或函数

double       :声明双精度变量或函数

signed       :声明有符号类型变量或函数

unsigned   :声明无符号类型变量或函数

enum         :声明枚举类型

struct         :声明结构体变量或函数

union         :声明联合数据类型

void           :声明函数无返回值或无参数,声明无类型指针

if                :条件语句肯定分支

else           :条件语句否定分支(与if连用)

switch        :用于分支语句

case          :开关语句分支

default       :开关语句中的“其他”分支

for              :一种循环语句(可意会不可言传)

while          :循环语句的循环条件

do              :循环语句的循环体

goto           :无条件跳转语句

break         :跳出当前循环

continue    :结束当前循环,开始下一轮循环

return         :子程序返回语句(可以带参数,也可不带参数)

auto           :声明自动变量,在栈区开辟空间,一般不使用

static          :声明静态变量

extern        :声明变量是在其他文件正声明(也可以看做是引用变量)

register      :声明寄存器变量,申请失败,默认转成auto类型

const         :修饰变量为只读变量

volatile       :修饰变量,读取最新的值(防止编译器优化;从内存读取最新的值)

sizeof         :计算数据类型占内存大小

typedef       :用以给数据类型取别名(当然还有其他作用)

关键字分类记忆:

  1. 数据类型(有符号,无符号):char,short,int,long,float,double,signed,unsigned,enum
  2. 存储类型:auto,static,extern,register,(const, volatile,用于修饰)
  3. 控制语句:if,else,switch,case,default,for,while,do,goto,break,continue,return
  4. 构造:union,struct
  5. 求字节:sizeof
  6. 取别名:typedef
  7. 空类型:void

2、运算符

c语言中语法规定的运算符

(1)按照 功能 分类

          算术运算

 +(加)      -(减)        *(乘)      /(除)        %(取余)

10 % 3 ==>  1

10 / 3 ==>  3(去掉小数点,留整数)

关系运算

判断两个数或两者之间的关系

关系成立则结果为真(1),关系不成立则为假(0)

>(大于)        <(小于)          <=(小于等于)        >=(大于等于)          !=(不等于)              ==(等于)

1 == 2   结果为假(0)

1 != 2  结果为真(1)

3 > 3  结果为假(0)

3 >= 3  结果为真(1)

逻辑运算

逻辑 - 将数据看作一个整体,只有真(1 / 非零数据)和 假(0)

&&(逻辑与): 前后都为真,则结果为真,有假(0)则假(0)

   (1 > 2)&&(4 < 5) 结果为假(0)

   (1 > 2)&&(4 > 5) 结果为假(0)

   (1 < 2)&&(4 < 5) 结果为真(1)

   (1 < 2)&&(4 > 5) 结果为假(0)

     -1  &&  -3                   结果为真(1),这种写法不会在代码中出现,非零为真

||(逻辑或): 有真(1)则真(1),有一个为真则结果为真,前后都为假,则结果为假

   (1 > 2)||(4 < 5)  结果为真(1)

   (1 > 2)||(4 > 5)  结果为假(0)

   (1 < 2)||(4 > 5)  结果为真(1)

   (1 < 2)||(4 < 5)  结果为真(1)

! (逻辑非):真变假,假变真

   !(1 > 2) 结果为真(1)

   !(1 < 2) 结果为假(0)

短路法则:

  (1 > 2)&&(3 + 4) 因为(1 > 2)为假,结果一定为假(0),不会去计算(3 + 4)

  (1 < 2)||(3 + 4)    因为(1 < 2)为真,结果一定为真(1),不会去计算(3 + 4)

 位运算

位 - 指的是二进制的位

&(位与)          |(位或)          ~(位取反)           ^(异或)            >>(右移运算)           <<(左移运算)

3  &  4 ==>  0011  &  0100  ==>  0000   结果为0

3  &  6 ==>  0011  &  0110  ==>  0010   结果为2

3  |  4  ==>  0011  |  0100  ==>  0111   结果为7

3  |  6  ==>  0011  |  0110  ==>  0111   结果为7

~3   ==>  ~0011  ==>  1100   结果看3占内存的字节数,如果是1个字节  结果为0b11111100    0xfc

异或:相异(不同)为1,相同为0

3  ^  4  ==>  0011  ^  0100  ==>  0111   结果为7

3  ^  6  ==>  0011  ^  0110  ==>  0101   结果为5

3 >> 1  ==>  0011  向右移动1位  ==>  0001   结果为1

3 << 2  ==>  0011  向左移动2位  ==>  1100   结果为12

3 << 4  ==>  0000 0011  向左移动4位  ==>  00110000   结果为48(按照1字节来计算)

3 << 9  ==>  0000 0011  向左移动9位  ==>  0000 0000  结果为0(按照1字节来计算)

3 << 9  ==>  0000 0011  向左移动9位  ==>  0000 0000 0000 0000 0000 0110 0000 0000  结果为1536(按照4字节来计算)

赋值运算

将等号右边的值赋值给左边的变量

=

int num = 2;  //num占4字节,能存放0 - 2^32-1之间的数据

复合赋值运算

 +=         -=        *=        >>=      ....

num += 5;==>  num = num + 5;

num -= 2;   ==>  num = num - 2;

......

自增自减运算符 ++  、--

int num = 10;

num++;   ==>  num = num + 1;  num = 11

num--;     ==>  num = num - 1;

++num;   ==>  num = num + 1;

--num;     ==>  num = num - 1;

做复杂运算时:

++num,先将num的值自增1,再参与其他运算

num++,向参与其他运算,在将num的值自增1

--num,先将num的值自减1,再参与其他运算

num--,向参与其他运算,在将num的值自减1

int a = 10;

int b = 20;

a +(b++);   ==>   a+b, b=b+1   结果为30,a = 10,b = 21

a +(++b);   ==>   a=b+1, a+b   结果为31,a = 10,b = 21 

条件运算

三目运算符

(条件判断)?(结果为真执行):(结果为假执行)

 int a = 10;

 int b = 20;

((a>b) ? (a+=10) : (b+=10));

运行后:a = 10,b = 30;

int c = 0;

c = (((a>b) ? (a+=10) : (b+=10)));

运行后:a = 10,b = 30,c = 30;

求字节大小

计算变量/数据占内存空间的大小(以字节为单位)

sizeof(变量 / 数据)

sizeof(int);

int num = 10;

sizeof(num);

逗号运算

从左到右依次执行,取最后一次的结果

int a = 0;

int b = 0;

int c = 0;

int d = 0;

int e = 0;

e = (a=1+2, b=2+3, c=3+4, d=5+6);

运算后:a = 3,b = 5,c = 7,d = 11,e = 11

强制类型转换

()圆括号

(int) 括号内是数据类型

float num = 3.14;//单精度浮点数/小数

int n = 0;

n = (int)num;  //将num强制转换为int(整型),再赋值给n变量

其他

[]    用于数组中,做为取数组中的元素,方括号内写数组下标

()    用于改变优先级,优先运算括号内的内容,括号内是表达式

.     用于结构体变量当中,作为取结构体中的一个元素

->   用于结构体指针变量当中,作为取结构体指针中的一个元素

&    作为单目运算符时,是取地址符号,用于得到变量的内存地址(&num)

*     作为单目运算符,是取内容符号,用于得到地址中的内容

(2)按照操作数分类

根据 参与运算的“操作数”,可将运算符非为单目,双目,三目

单目:

++(自增)       --(自减)        !(逻辑非)      ~(位取反)      +(正)      -(负)   

&(取地址)     *(取内容)

双目:

+(加)      -(减)    *         /         %

>         <         >=         <=       !=         ==

&&        ||          &         |           ^         >>         <<

=         +=          -=         *=         /=

三目:

?:

(3)运算符优先级

一个表达式中有多个运算,按照优先级顺序

1 + 2 * 3   先计算乘法,再计算加法,结果为7

 3分隔符

起到分隔作用,将不同的词法符号分开

通过对分隔符的恰当运用,使得代码外观格式更为清晰易读,还可以帮助分析代码中的语法错误

空格     tab       换行     注释

int main()

{

        int num = 0;

        printf(“hellon”)

        return 0;

}

 4标点符号

c语言中具有特殊意义的一些符号

用于定义 变量名 函数名 宏名 自定义类型名等...

int num = 0;  //num 就是标识符

int Num = 0;

命名规则:

  1. 由字母 数字 下划线 组成
  2. 不能以数字开头(只能以字母和下划线开头)
  3. 不能和关键字重名

注意:

  1. 严格区分大小写
  2. 一般能见名知意

命名时一般按照一定的命名规范:

      驼峰命名法:混合使用大小写字母来构成变量和函数的名字

       eg:ClassNum

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018173.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号