初识C语言(2)

目录

一.选择语句

1.1if语句的使用

二.循环语句

2.1while循环语句

三.函数

3.1先定义函数的情况

3.2后定义函数的情况

    3.3函数的组成

 四.数组

4.1数组的定义

4.2数组的初始化

 五.操作符

5.1算术操作符

5.2移位操作符

 5.3位操作符

 5.4赋值操作符

 5.5单目操作符

 5.6关系操作符

 5.7逻辑操作符

 5.8条件操作符

5.9逗号表达式

 六.常见关键字


一.选择语句

1.1if语句的使用

    选择语句即if语句,if语句在C语言中的使用方法是if(条件),若条件为真,则执行条件下中大括号的代码,若条件为假的,则执行else下大括号中的代码,如下图所示。

    假如输入的a为160,比100大,则执行第一条语句,输出a比100大。假如输入的a是86,不满足第一条语句执行的条件,则来到第二条else if语句这里,满足第二条语句中比0大比100小的条件,则执行第二条语句。假如输入的a为-10,不满足第一条语句执行的条件,不满足第二条语句执行的条件,则来到else这里,执行else后的 打印a小于等于0。注意,在if选择语句中,if()括号中为判断条件,条件弱真则执行该条件下的语句,假则执行下一条判断语句。()后面不要加分号,若判断语句下,仅跟一条要执行的语句,那么可以不加大括号,如果是多条,则要加大括号。

二.循环语句

2.1while循环语句

    

    while循环语句如上图所示,while() ()里面的是循环判断的条件,若满足这个条件则执行循环,不满足则跳过这个循环。line++;的意思是,执行一遍这个语句,line的值会增加1,和line=line+1;这个语句具有相同的作用。

三.函数

3.1先定义函数的情况

    函数的作用是简化代码,避免重复使用,避免多段同样功能的代码出现。

    如上图所示,Add便为一个我们定义的函数,起到了求两个数的和的作用。函数在使用之前需要自己去定义,Add为函数名,括号中的int x,int y用来接收sum=Add(num1,num2)中的num1和num2。num1的值会被赋给x,num2的值会被赋给y。又因为x y均为整型变量,所有用int整型来接收,输出的z也为整型变量,返回值为return z;所以要在Add之前添加int。

3.2后定义函数的情况

    如下图所示,部分教科书可能会在主函数后定义函数,这并不是一个好的习惯。倘若用这样定义函数的方法的话,需要对函数先进行声明。int Add(int x,int y);便是对函数的一种声明。但要注意的是声明函数的时候需要在()后面加分号,但在定义函数,写函数的时候,不需要在()加分号。

   

    3.3函数的组成

    如下图所示,函数由函数名,函数形式的参数,函数体和返回类型组成。返回类型和return z;那里的返回类型要做到相一致。

 四.数组

4.1数组的定义

    数组由数据类型相同的一系列元素组成,在需要数组的时候,可以通过声明数组来告诉编译器数组中内含多少元素和这些元素的类型。普通变量可以使用的类型,数组元素均可以使用,如下图所示,第一个数组为内含365个float类型元素的数组,第二个数组为内含30个char类型元素的数组,第三个数组为内含50个int类型元素的数组。方括号[]代表,arr1 arr2 arr3均为数组,arr1 arr2 arr3分别为数组的名称,方括号中的数字表明数组中的元素个数。        

4.2数组的初始化

    数组元素的编号是从0开始的,所以例如如下图所示,ch[0]表示ch数组中的第一个元素,ch[5]表示第6个元素,也就是最后一个元素。如这里的printf("%c",ch[0]);这段代码含义即为打印ch这个数组中的第一个元素,即为h。

     数组初始化,如下图所示,在数组后要将赋给数组的值用大括号括起来,中间用逗号隔开。将1赋给数组的首元素arr[0],2赋给数组的第二个元素arr[1],以此类推。

     

    如上图所示,还可以将字符和字符串赋给数组,这样的数组又称之为字符数组。但要注意的是在将字符串赋给数组的时候,数组的大小需要比字符串的位数多一位,因为双引号中的字符串默认结束时跟着一个\0作为结束建议编译器结束的标志,而\0也是一个字符,在数组中会占一位。所以在将字符串赋给数组时需将数组的大小设置的比字符串的长度多一位。

    除此之外,还可以给数组部分初始化,如下图所示。当初始化列表中的值少于数组元素的个数时,编译器会把剩余的元素都初始化为0。也就是说,如果不初始化数组,数组元素和未初始化的普通变量一样,其中储存的都是垃圾值。但是如果部分初始化数组,数组剩余的元素就会被初始化为0。

    如果初始化的元素多余数组元素的个数,会被编译器视为错误!

 五.操作符

5.1算术操作符

    如下图所示,这五个符号为算数操作符,依次为加 减 乘 除 取余(求模运算符)。加减乘除便是数学中四则运算的加减乘除,最后一个%的含义为取余,意为两个整除做除法运算,得到余数。

    

    如上图这段代码 7%2的意思为得到7除以2的余数1,printf函数打印出来n的值便为1。值得注意的是取余(求模运算符只能用于整数,不能用于浮点数)。

5.2移位操作符

    移位操作符的含义是移动该数字在计算机内存中储存形式(二进制位),以左移位例,就是把二进制位整体向左移动,例如整型变量 int a=3;在计算中的存储形式位00000000000000000000000000000011,对其进行左移一位操作如下图所示,得到的b在计算机内存形式位00000000000000000000000000000110,转换成十进制为即位6,所以printf("%d\n",b);这个语句输出b的值为6。

 

 

 5.3位操作符

    位操作符如下图所示,分为&按位与,^按位异或,|按位或,三种操作符。

    &按位与的含义为比较两个数在内存中存储的二进制位,同为1为1,有0则为0,所以3&5运算的结果为1。

    

    |按位或的含义为比较两个数在内存中存储的二进制位,有1则为1,全0则为0,所以3|5运算的结果为7.

     

     ^按位异或的含义为比较两个数在内存中存储的二进制位,相同则为0,不同则为1,所以3^5运算的结果为6。

 

 5.4赋值操作符

    常用的赋值操作符如下图所示,含义依次为下。

    =:赋值,将等号右边边的值赋值给左边。

    += :加等于a+=1;a=a+1;a++;这三条语句的含义相同。

    -=:减等于a-=1;a=a-1;a--;这三条语句的含义相同。

    *=: 乘等于 a*=2;和a=a*2;这两条语句的含义相同。

    /=:除等于 a/=2;和a=a/2;这两条语句的含义相同。

    &=:先进行按位与的计算,然后赋值。

    ^=:先进行按位异或的计算,然后赋值。

    |=:先进性按位或的计算,然后赋值。

    >>=:先进行右移位,然后赋值。

    <<=:先进性左移位,然后赋值。 

     

 5.5单目操作符

    单目操作符即为只有一个操作数的操作符。

    !为逻辑反操作,如!=的意思为不等于,而==的意思为等于。 如下图所示,C语言中0为假,1为真,int a=0; printf("%d\n",!a);这两条语句打印的结果为1,因为!0是逻辑反操作,a本来为0是假,!a是将a变为真的意思,即a的值会变为1,所以打印输出的值便为1了。

    &符号的意思为取地址,即在输入一个数的时候,例如scanf("%d",&a);,这条语句的含义即为输入一个整型的数字,将该数字的值存放为变量a中,&a在这里就起到了取地址的作用。

    如下图所示,sizeof的用途为 计算的是变量或类型所创建变量占据内存的大小,单位是字节,如a为整型变量,大小是4个字节。int为整型类型,大小为4个字节。10为整数,整形数据,大小为4个字节。

    ~的含义为按位取反,这里的按位意思是按二进制位,对存在内存中的补码进行取反操作。在内存中,数据是以二进制形式存放,内存中存储的是二进制的补码。

    如下图所示,-1的源码为10000000000000000000000000000001,这里第一位的1的意思为负数,0的话便是整数。

    源码变反码的操作是,正数的源码不变即为反码,负数的源码首位不变,其它位取反,1变为0,0变为1.所以-1的反码是11111111111111111111111111111110。

    正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。所以最后对-1按位取反的结果是0。

 

    ++ --在C语言中分为前置++ -- 后置++ --,前置的区别是先增加,再进行其他运算,如下图所示 int a=10;int b=++a;,这样计算出来的结果是b=11 a=11。 假如把这个的++a改为a++,则为先进行赋值操作,然后a再自增1,所以结果是b=10,a=11。这就是前置和后置的根本区别,--与++同理。

     

     强制类型转化,强制类型转化即在某一个数前写(),括号中是要强制转化的类型,如下图便是把3.14转化为整型,这样3.14这个浮点数会被转化为3这个整型,最好n得到的赋值便是3了。

 5.6关系操作符

    下图的关系操作符的含义分别为。

    > 大于。

    >=  大于等于。

    < 小于。

    <= 小于等于。

    != 不等于。

    == 等于(注意区分 一个等号=是赋值运算符,两个等号==才是数学中等于的符号)。

     

 5.7逻辑操作符

    如下图所示,&&的含义为逻辑与,即一般含义中和的意思,意为两个条件要同时满足。例如在if语句中判断a大于0,小于等于100满足条件时候,if(a>0&&a<=100)这样才是正确的写法,含义是两个条件必须同时满足才会执行if后面大括号中的语句。

    ||的含义为逻辑或,意为两个条件满足之一就可以。例如在if语句中判断,a小于0或者a大于100满足条件的时候,if(a<0||a>100)这样才是正确的写法,含义是满足a小于0 a大于100二者之一便可以执行if后面大括号中的语句。

 5.8条件操作符

    条件操作符又被称作为三目运算符,对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为真,则计算x的值,运算结果为x的值;如果b的值为假,计算y的值,运算结果为y的值。
 

     如上图所示,三目操作符可以用来简化if条件语句,例如判断a b两个变量的大小,取其最大值,可以用max=(a>b?a:b);这样的语句,意为a大于b吗,如果大于,输出a的值赋值给max。如果不大于,输出b的值赋值给max,这样就起到了简化代码的作用。

5.9逗号表达式

   逗号表达式的形式如下图所示。整个逗号表达式会从左到右以此计算,整个逗号表达式的结果是最后一个表达式的结果。如int d=(a+2,b=a-3,c=b+4); 会从左到右先计算a+2,然后将a-3的值赋值给b,最后将b+4的值赋值给c,再将c的值赋值给d。

    

 六.常见关键字

     

 

     常见关键字如上图所示,值得注意的是现在cpu一般会先在寄存器中取值,假如寄存器中找不到寄存器需求的值,便会到告诉缓存中取值,假如还找不到,便会取内存中取值。这个金字塔从下到上,运行读取速度越来越快,造价越来越高,空间越来越来。如下图所示在C语言中,我们还可以用 register int a=10;这样的形式取建议编译器定义寄存器变量,好处是寄存器变量相比于普通存储在内存中的变量,读取运行的速度更快,有利于提高程序运行的速度。但register只是起到建议的作用,是否真正定义了寄存器变量由编译器根据这个变量是否经常出现,是否常使用等一系列标准进行评估,最终决定是否定义寄存器变量。

    

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值