C语言入门学习 第一天

目录

一        前言

二        打印

三        变量

四        常量和宏定义       

五        数据类型

六        取值范围(最大值和最小值)

七        字符和字符串

八        算数运算符 

九        关系运算符和逻辑运算符

十        if语句

十一        switch语句和分支嵌套

十二       while语句和dowhile语句 

十三        for语句和循环语句

十四        break语句和continue语句


一        前言

编程语言是人类跟机器打交道的枢纽,CPU即中央处理器主要功能是解释计算机指令以及处理计算机软件中的数据。CPU能将0和1的组合通过查找指令表跟具体的指令相挂钩,而0和1的组合称之为机械码也叫机械语言,为第一代语言,也是CPU直接读的懂的语言。而后就有了汇编语言,引入大量的助记符,帮助人们编程,然后由汇编语言将这些助记符转化为机械码,转化的过程称之为编译。 

为了更方便编程,于是就有了C语言,C为第三代称为高级语言,前两代为低级语言。用编译器来编译C语言会将C语言译成汇编语言,再有汇编语言译成机械语言,最后又CPU译取。而C语言的优势在于效率高,灵活性高,可移植性高。

1.效率高:C是一种编译型语言,源代码最终编译成机械代码也就是可执行文件(.exe)

2.灵活度高:提供多种运算符,可以完成计算机底层的位操作,语法简单约束少,数据结构丰富多变,可以制定一些数据类型,同时拥有直接操作计算机硬件的能力。

3.可移植性高:源代码不需要改动或加以修改就直接在其他机器上编译后正确运行。

一        第一个程序

f8fa349af2d146339ed1010a1cac5da3.png

可以用任何编译器编译出hello  world!


二        打印

打印在编程中指输出的意思,另外在linux中要注意要先生成文件以后在编译。
printf("XXXX");//为格式化输出函数

       

下图为转移字符需要进行认识。

a7e044d20afd4bf3aab194758540660e.jpeg


三        变量

变量和常量是程序处理的两种基本数据对象。

变量:变量的意义是确定目标并提供存放空间(确定目标就的给变量命名,从而再获得它的数据)

变量名 :        

a. 变量名只能是英文字母(A~Z  a~z)和数字(0~9)或下划线组成。

b.第一个字母必须是字母或者下划线开头。

c.变量名必须区分大小写(传统大写一般是常量小写一般是变量)。

d.不能使用关键字

指定变量即将存放的数据类型有    char  字符型,占用一个字节。int  整形,通常反映了所用机器中整数的最自然长度。float  单精度浮点型。double   双精度浮点型。

int a;//数据类型+变量名
%.2f    //精确到小数点两位
%11.2f    //11位总占宽

四        常量和宏定义       

常量:整型变量、实型变量(带小数)、字符型变量(分为普通字符和转移字符)、字符串常量、符号常量(使用先定义)。

定义符号常量的格式:宏定义
#define 标识符  常量

字符常量:'X'
字符串常量:"XXX"

标识符 :               

a. 标识符只能是英文字母(A~Z  a~z)和数字(0~9)或下划线组成。

b.第一个字母必须是字母或者下划线开头。

c.标识符必须区分大小写。

d.不能使用关键字

  ***变量名,常量名,函数,数组等的名字都叫标识符。


五        数据类型

9f1b47db9bda405bbf22fe581c232b42.jpeg

827a008bf54d40adb6e7a7d19322b955.jpeg

sizeof运算符:用于获取数据类型或者表达式的长度。

sizeof(对象);//可以取消括号
sizeof(类型);//不可以取消括号

signed 和 unsigned :用于限定char或者任何整型变量的取值范围。singed标识该变量带符号位,unshinged表示该变量不带符号位,不带负数可以存放更大的值。


六        取值范围(最大值和最小值)

二进制的单位比特位,是CPU能读懂的最小单位  (bit,b)每个比特位只能存放一个二进制数。字节是内存机构的最小寻址单位(Byte,B),1Byte==8 bit   ,一个字节最大为1111 1111。十进制为2的八次方减一255。32个比特位1的十进制等于2的32次方减1 。得出公式为2的n次方减一。

符号位:        

1.存放signed类型的储存单元中,左边第一位表示符号位。如果改位为0,则表示该整数是一个正数;如果改位为1,则表示该整数是一个负数。                                     

2.一个32位的整型变量中,除去左边第一位符号位,剩下表示值的只有31个比特位。

3.实际上计算机是用补码的形式来存放整数的值。

        补码:         

正数:正数的补码是该数的二进制数。

负数:a.先取得该数的绝对值的二进制形式  b.再将第一步的值按位取反 c.最后将第二步的值加一。

举例94f04a5c2f4248d79ae8cbea899c7ad2.jpeg

基本数据类型取值范围表:

061885e461064f15b5f7c1fc3e33a4f2.jpeg     2c58192529ff42af9d4fec6ac3ef18be.jpeg


七        字符和字符串

所谓字符也同样运用了查表得原理,就是ASCII字符表。我们所知道整型是用signed和unsigned区分的而char也同样如此。不同之处在于整型不说明则是默认signed处理,而并没有默认由编译系统自己来决定的。字符串C语言并没为字符串设定一个单独的类型,只需要在内存中找一块连续的空间然后方一串字符类型的变量就行。

字符串语法
char 变量名[数量];
变量名[索引号]=字符;//获取字符

实例  
声明字符串:char name[5];
给字符串赋值        name[0]='f';
                   name[0]='i';
                   name[0]='s';
                   name[0]='h';
                   name[0]='c';
字符和声明写一起
char name[5]={'f','i','s','h','c'};
会出现乱码,没有字符串结束标志
char name[6]={'f','i','s','h','','c','\0'};
字符数量太多不好数,编译的时候会自己完成数数
char name[]={'f','i','s','h','','c','\0'};
字符串常量形式可以不用写\0
char name[]={"fishc"};
也可以直接去掉大括号
char name[]="fishc";

八        算数运算符 

    95bd6c5d97a8434a9385f3917fc48984.jpeg

C语言通过提供运算符来支持我们对数据经行处理,整数除法两个操作时都是整数的话会舍弃小数,都为浮点数的话结果也是浮点数。求余运算符左右两个操作数要求必须是整数,而不能是浮点型或者其他类型,不然会出错。 

目:1+1 1和1为两个操作数,+为运算符,+起作用两个操作数为双目,-1中-起作用一个操作时为单目。

表达式:运算符与操作数连接起来的式子,称之为表达式。例如:1+1 、'a'+'b'、a+b(与字符'a'+'b'不同,a+b为变量就是把里面存储的数据相加)复杂的式子要考虑优先级和结合性的问题(优先级由表)

类型转换:操作数类型不同的时候就必需考虑类型转化,例如:1+2.0整型和浮点型,编译器会在运算之前将他们转化为某种数据类型,一般是坑小的操作数转化为占用坑位较大的那个操作数的数据类型。在进行运行,就是在上例中转化为浮点型3.0000000。

printf("%f\n",1+2.0);//浮点型输出3.000000
printf("%d\n",1+2.0);//输出0,错误原因是整型输出
若想出入整型,则强制转化操作数的数据类型,改为//
printf("%d\n",1+(int)2.0);
printf("%d\n",1+(int)2.3);//整型输出为3,舍弃0.3小数

九        关系运算符和逻辑运算符

关系与算符:<(小于)<=(小于等于)>(大于)>=(大于等于)优先级高, ==(等于)!=(不等于)                                           优先级低。(关系预算符是双目运算符对比左右两个操作数的大小关系得到的值是一个逻辑值0或1)。

关系表达式:用关系两边的变量、数据或者表达式连接起来,称之为关系表达式。

c11f0d8bd3e64d97b7773a2dda46e633.jpeg

     

d6bbf298cffe49a880f8c5e14288f7bf.jpeg

短路求值: 短路求值又称最小化求值,是一种逻辑运算符的求值策略。只有当第一个运算数的值无法确定逻辑运算的结果时,才对第二个运算数进行求值。C语言对于逻辑与和逻辑或采用短路求值的方式。

#include<stdio.h>
int main ()
{
    int a=3,b=3;
    (a=0)&&(b=5);
    printf("a=%d,b=%d\n",a,b);
     (a=1)||(b=5);
    printf("a=%d,b=%d\n",a,b);
    return 0;
}
输出a=0,b=3
    a=1,b=3

十        if语句

if语句(1)
....//其他语句
if(表达式)//会返回一个逻辑值的一个表达式,填入一个逻辑值也是可以的,非零为真
{
....//逻辑值为真所执行的语句、程序块,一条语句大括号可以省略
}
....//其他语句
if语句(2)
....//其他语句
if(表达式)
{
....//逻辑值为真所执行的语句、程序块,一条语句大括号可以省略
}
else
{
....//逻辑值为假所执行的语句、程序块,一条语句大括号可以省略
}
....//其他语句
if语句(3)
....//其他语句
if(表达式1)
{
....//逻辑值为真所执行的语句、程序块,不假程序往下走
}
else if(表达式2)
{
....//逻辑值为假所执行的语句、程序块,为假程序往下走
}
.
.
.
else if(表达式n)
{
....//逻辑值为假所执行的语句、程序块,为假程序往下走
}
else 
{
....//所有的都为假,则执行这条语句
}
....//其他语句

十一        switch语句和分支嵌套

                                switch语句
....//其他语句
switch(表达式)//表达式的值或结果与case后的值一样则执行那条语句
{
    case 常量表达式1:语句或程序块1
    case 常量表达式2:语句或程序块2;break;//若没有break则会一直执行下去
    ...
    default:语句或程序块N+1//都没有符合的就会执行这条语句若没有default
                         // 也没有符合的常量表达式,swirch就不会执行//
}
                            分支结构的嵌套
if(表达式)
    if(表达式)
    ...
    else
    ...    //内嵌if
else
    if(表达式)
    ...
    else
    ...    //内嵌if
这种的话可以使用流程图来描写程序

悬挂else:如果不使用花括号 ,else会与最接近他的if匹配, 所以就建议使用花括号。等号带来的问题 if(表达式),表达式值赋值是为真或为假,如果是此时要经行判断是要使用关系运算符时会发生一定错误。


十二       while语句和dowhile语句 

1. while语句

while(表达式)//非零为真

        {  循环体(如果是很多语句构成的程序块用大括号括起来为程序块)     }           

2.do...while语句

do

         {    循环体(如果是很多语句构成的程序块用大括号括起来为程序块)   }

        while(表达式);//直接先经行循环之后在判断表达式是否为真,例如验证密码。另外此时的封号不能丢表示结束循环的意思,如果没有封号可能会执行下一条语句造成程序错误。


十三        for语句和循环语句

我们学过的循环一般是三个步骤:1初始化计时器 2.循环条件 3.更新计数器 。而for循环可以很巧妙的集合这三点在一起。

for语言for(表达式1;表达式2;表达式3)
        循环体

三个表达式用封号隔开,其中:
1.表达式1是循环初始化表达式
2.表达式2是循环条件表达式
3.表达式3是循环调整表达式

for(i=0;i<3;i++)
     循环体

               

e2718ad1e18344d8812438f8896db8be.jpeg

C99新标准:C99允许在for语句的表达式1中定义变量
for (int i = 0; i < 100; i++)其中for表达式中的定义不能出循环使用。

循环嵌套:分支结构决定了哪些语句会被运行,哪些语句不会被运行。循环决定了那些语句被运行多少次,对于嵌套的循环结构是从内到外的,先执行内层循环在执行外层。例如:打99乘法表时外面的一个for循环为行,里面的一个for循环为列,执行时先里后外。


十四        break语句和continue语句

我们上面用了while语句、do...while语句、for语句实现循环,在进行循环体后,执行完所有循环的内容,叫一次循环。符合循环条件才会进行下一次的循环。而使用break语句和continue语句会在程序执行的途中退出,或者跳过一些语句进入下一次循环。

1.break语句:对于嵌套循环来说break语句只负责跳出它所在那一层循环。要跳出外层的循环就得在加一个break语句

2.continue语句:当满足某个条件的时候跳过本轮循环的内容,直接开始下一轮的循环。嵌套循环来说continue语句只负责跳出它所在那一层循环。 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值