xieyupengi

编程是我们与计算机沟通交流的方式;

汉语  英语 韩语等是人类的自然语言,但是计算机识别不了,所以人类想尽一切办法发明了以下语言;

机器语言 最早的人类与计算机交流的语言;

汇编语言 人类发明的   计算机交流的二代语言  加上了一些特殊的语言  比如  指令  函数等;

高级语言  与自然语言相近的语言 ,比如C  C++   java phyton  等等;

机器码最早是由于二极管发源而来的 相当于节能灯 ;

开灯(1)  关灯(0)  所以产生了机器码(二进制);

那么计算机与人类交流的方式:通过数据与人类交流沟通;

计算机众多的零部件中和数据打交道的硬件有哪些呢?

CPU   磁盘   内存;

作案工具 IDE(集成开发环境)——————编程软件

编译器:翻译(把代码翻译给计算机)

调试器:帮助我们找BUG的神器

代码编译器:比记事本还要流弊的记事本(提供联想代码快速生成行号等功能)

其编译过程:a.c 代码如何变成a.exe经历了什么?

1 预编译: 展开头文件与宏替换     gcc---E a.c---o a.s

2 汇编:   gcc---s.a.i---o a.s

3 编译: (多文件联合编程)  gcc---  c a.s --- o a.o

4 链接:(多个obj或.o 文件链接在一起编程 .exe文件)

                 gcc a.o --- o a.exe (b.exe  xxx .exe )

c语言分数据类型

数据类型关键字12个

char,  short, int, long,float, double,unsignef, signed, struct,union, enum, void.

控制语句关键字12个

if,else, switch,case,default,for,do ,while, break, continue,goto,return.

存储类型 5个

auto,extren, register,static,const.

其他关键字3个

sizeof, typedef, volatile.

它们的作用:编译器预算对象分配发的内存空间大小.

数据类型:基本类型:整形L(int,short,long) 字符型 char   实形/浮点型  float  double  

构造类型 “数组类型  结构类型  struct   联合类型(union)  枚举类型 (enum)

指针类型:(char,in,int*等)

 

常量   整形 :100,200

实形:3.14, 0yke.125,-3.66456

字符型  \'a\' , \'b\',  \'c\' , \'e\'

字符串常量:"Hello  World "

变量:先定义再赋值 可以改变的量

标识符的命名规则

1标识符不能是关键字

2标识符只能由字符,数字 ,下划线组成

3.第一个字符必须为字母或者下划线

4标识符中字母区分大小写

变量特点:

1.变量在编译时为其分配相应的内存空间

2.可以通过其名字和地址访问相应内存

声明和定义的区别

声明变量不需要建立存储空间  如:extern   int  a;

定义变量需要建立存储空间   如: int b ;

#include<stdio.h>
int   main (){
    extern  int  a  ;
    a=10;
    int  b=10;
    return  0 ;
    
    
    
    
}
​

 

 

 

上述声明是小区间  而定义为大区间 ;

#include<stdio.h>
#define  MAX 100;
//开头的语句为预处理语句  无需分号结尾;
//定义一个宏定义标识符MAX  他代表 100  MAX 是常量 
//宏定义以后的代码都可以使用MAX  
//在后面出现的MAX ,预处理都会替换为100 
int   main  ()
{
    MAX;
    MAX;
    //const 是一个关键字,作用是修饰一个变量为只读
  const  int  b=10086;
    return  0;
 //进制输出方式
    int  a=10 ;
    int b=010;
    int  c=0x10;
         printf("%d/n",a);
         printf("%o/n",a);
         printf("%x/n",a);
    
    

 


   
}

计算机的内存数据存储方式;

原码:将最高位作为符号位 (0正  1负)其余各位代表数值本身绝对值;

+7的原码:0000   0111

-7的原码: 1000   0111

+0的原码: 0000   0000

-0的原码:  1000   0000

反码:一个数为u正 则反/原码相同, 若一个数为负  则符号位为1,其各位与原码相反

+7反码:0000   0111

-7反码: 1111   1000

+0反码:0000   0000

-0反码: 1111   1111

补码:反码 /原码都不利于计算,如+7加-7 ,还需要判断符号位

整数 原码  反码  补码都是相同的 

负数:最高位为1  其余各位与原码相反  最后对整个数加1

-7的补码:1111   1000

+0的补码:0000   0000

-0的补码: 1111  1111

补码符号位不动,其他各位原码取反   最后对整个数加1 得到原码

sizeof  关键字

sizeof 是C语言关键字 ,功能是求指定数据类型在内存的大小  范围  字节

int  类型 

int 常量变量  (int是32位的一个二进制数,在内存中存储4个字节)

int 不管是32位系统还是64位系统下, 不论是windows 还是unix 都是4个字节

整形溢出:计算一个整数的时候超过整数能够容纳的最大单位后,数据会溢出,溢出的结果是高位舍弃

;当一个小的整数赋值 给大的整数,符号位不会丢失  会继承  

大端对齐与小端对齐

对于arm,Intel   这种x86 构架的复杂指令cpu  整数内存是倒着存放的,低地址放地位 ,高地址放高位,小端对齐 

但对于unix  服务器 cpu 更多采用大端对齐的方式存放整数

char  常量变量

char c ; 定义一个char 变量

不可打印的char 字符

/a  警报

/b 退格

/n换行

/r 回车

/t 制表符

//斜杠

/‘单引号

/?问号

 

char 与unsigned  char

char的取值范围为 -128到127

unsigned char  为0-255

float  double 

浮点型  变量

float(4)   double (8)

输出

printf  %f  %lf

volatile:代表变量是一个可能被cpu指令 以外的地方  编译器就不会针对这个变量去优化目标代码

register:变量在寄存器里面,而不是在内存里面。但register是建议指令 而不是命令型指令

字符     对应数据类型

d            int

hd           short   int

hu           unsiged   short int

o              unsigned  int

u              unsigned  int 

x/X            unsigned   int

f                  float/double

e/E             double

c        char

s/S          char* /wchar_t*

P               void*

%               %   

l     附加在d,u,x,o 前面     表示长整数

--       左对齐

m       数据的最小宽度

0   将输出的前面补上0   直到指定列宽为止(不可以搭配“使用)

N   宽度至少 N位     不够以空格填充 

putchar  是显示一个字符的函数

*scanf  函数与getchar函数

scanf   通过键盘读取用户输入   放入变量中  记得参数一定是变量的地@&(首地址)

#include<stdio.h>
int   main()
{
    char  x;
    x = getchar();
    printf("%d,/n", x);
    //b=98
    //b=66    结果不一样
    
    return  0;
​
}

 

 

          

分类:

技术点:

相关文章:

  • 2021-10-04
  • 2021-12-10
  • 2021-11-08
  • 2021-07-06
  • 2021-11-30
  • 2021-11-27
猜你喜欢
  • 2021-06-04
  • 2021-12-06
  • 2022-01-24
  • 2021-10-19
  • 2021-12-07
  • 2021-11-15
  • 2022-01-02
相关资源
相似解决方案