强制类型转换
强制类型转换是通过定义类型转换运算来实现的。其一般形式为:
(数据类型) (表达式)
其作用是把表达式的运算结果强制转换成类型说明符所表示的类型
在使用强制转换时应注意以下问题:
1、数据类型和表达式都必须加括号,如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。
2、转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
3、强制转换后的运算结果不遵循四舍五入原则。
-------------------------------------------------------------------------------------------------------------------------------
算术运算符
C语言基本算术运算符如下表:
名称 | 符号 | 举例 |
加法运算符 | + | 2+3=5 |
减法运算符 | - | 3-2=1 |
乘法运算符 | * | 2*3=6 |
除法运算符 | / | 6/2=3 |
取余运算符(模运算符) | % | 10%3=1 |
自增运算符 | ++ | int a=1; a++ |
自减运算符 | -- | int a=1; a-- |
除法运算中注意:
1、如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;
2、而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000。
取余运算中注意:
1、该运算只适合用两个整数进行取余运算,如:10%3 = 1;而10.0%3则是错误的;
2、运算后的符号取决于被模数的符号,如(-10)%3 = -1;而10%(-3) = 1。
注:C语言中没有乘方这个运算符,也不能用×,÷等算术符号。
自增与自减运算符
自增运算符为“++”,其功能是使变量的值自增1;自减运算符为“--”,其功能是使变量值自减1。它们经常使用在循环中。自增自减运算符有以下几种形式:
运算表达式 | 讲解(运算顺序) | 规则 |
a=1,b=a++ | b=a =1 a=a+1=2 | 先取值,再自增(减) |
a=1,b=a-- | b=a=1 a=a-1=0 | |
a=1,b=++a | a=a+1=2 b=a=2 | 先自增(减),再取值 |
a=1,b=--a | a=a-1=0 b=a=0 |
注意: 无论是a++还是++a都等同于a=a+1,在表达式执行完毕后a的值都自增了1,
无论是a--还是--a都等同于a=a-1,在表达式执行完毕后a的值都自减少1。
-------------------------------------------------------------------------------------------------------------------------------
赋值运算符
C语言中赋值运算符分为简单赋值运算符和复合赋值运算符,之前我们已经接触过简单赋值运算符“=”号了,
下面讲一下复合赋值运算符:
复合赋值运算符就是在简单赋值符“=”之前加上其它运算符构成,例如+=、-=、*=、/=、%=。
注意:复合运算符中运算符和等号之间是不存在空格的。
-------------------------------------------------------------------------------------------------------------------------------
逻辑运算符
符号 | 意义 | 举例 | 结果 |
&& | 逻辑与 | 1&&1 | 1 |
|| | 逻辑或 | 0||1 | 1 |
! | 逻辑非 | !0 | 1 |
逻辑运算的值也是有两种分别为“真”和“假”,C语言中用整型的1和0来表示。其求值规则如下:
1) 与运算(&&)
参与运算的两个变量都为真时,结果才为真,否则为假。例如:5>=5 && 7>5 ,运算结果为真;
2) 或运算(||)
参与运算的两个变量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:5>=5||5>8,运算结果为真;
3) 非运算(!)
参与运算的变量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>8),运算结果为真。
-------------------------------------------------------------------------------------------------------------------------------
分支结构
(1.1) if 条件语句
if(表达式) { 执行代码块; }
其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。
(1.2) if-else 语句
if(表达式) { 代码块1; } else { 代码块2; }
其语义是:如果表达式的值为真,则执行代码块1,否则执行代码块2。
(1.3)多重if-else 语句
if(表达式1) { 执行代码块1; } ... else if(表达式m) { 执行代码块m; } ... else { 执行代码块n; }
其语义是:依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n。
注意:1、当某一条件为真的时候,则不会向下执行该分支结构的其他语句。
2、在匹配if-else时,从最后一个向前匹配,且else是与最近的if匹配。
-------------------------------------------------------------------------------------------------------------------------------
循环语句
(1) while 语句
while(表达式) { 执行代码块; }
其中表达式表示循环条件,执行代码块为循环体。
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体代码块。
使用while语句应注意以下几点:
1、while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。
2、一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。
3、循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。
(2) do-while 语句
do { 执行代码块; }while(表达式); //此处有分号
do-while循环语句的语义是:它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
注意:使用do-while结构语句时,while括号后必须有分号。
(3) for 循环
for(表达式1;表达式2;表达式3) { 执行代码块; }
它的执行过程如下:
第一步:执行表达式1,对循环变量做初始化;
第二步:判断表达式2,若其值为真(非0),则执行for循环体中执行代码块,然后向下执行;
若其值为假(0),则结束循环;
第三步:执行表达式3;
第四步:执行for循环中执行代码块后执行第二步;
第五步:循环结束,程序继续向下执行。
在for循环中,表达式1是一个或多个赋值语句,它用来控制变量的初始值;
表达式2是一个关系表达式,它决定什么时候退出循环;
表达式3是循环变量的步进值,定义控制循环变量每循环一次后按什么方式变化。这三部分之间用分号(;)分开。
使用for语句应该注意:
1、for循环中的“表达式1、2、3”均可可以缺省,但分号(;)不能缺省
2、省略“表达式1(循环变量赋初值)”,表示不对循环变量赋初始值
3、省略“表达式2(循环条件)”,不做其它处理,循环一直执行(死循环)
4、省略“表达式3(循环变量增量)”,不做其他处理,循环一直执行(死循环)
注:死循环可以使用后面即将讲到的break解决
5、表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式
6、表达式1和表达式3可以是一个简单表达式也可以是多个表达式以逗号分割
7、表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体
8、各表达式中的变量一定要在for循环之前定义
-------------------------------------------------------------------------------------------------------------------------------
结束语句
(1) break 语句
使用break语句时注意以下几点:
1、在没有循环结构的情况下,break不能用在单独的if-else语句中。
2、在多层循环中,一个break语句只跳出当前循环。
(2) continue 语句
continue语句的作用是结束本次循环开始执行下一次循环。
break语句与continue语句的区别是:break是跳出当前整个循环,continue结束本次循环开始下一次循环。
-------------------------------------------------------------------------------------------------------------------------------
switch语句
switch(表达式) { case 常量表达式1: 执行代码块1; break; ... case 常量表达式n: 执行代码块n; break; default: 执行代码块n+1; }
在使用switch语句时还应注意以下几点:
1、在case后的各常量表达式的值不能相同,否则会出现错误
2、在case子句后如果没有break; 会一直往后执行一直到遇到break; 才会跳出switch语句
3、switch后面的表达式语句只能是整型或者字符类型
4、在case后,允许有多个语句,可以不用 {} 括起来
5、各case和default子句的先后顺序可以变动,而不会影响程序执行结果
6、default子句可以省略不用
-------------------------------------------------------------------------------------------------------------------------------
goto语句
goto语句是一种无条件分支语句,goto 语句的使用格式为:
goto 语句标号;
其中语句标号是一个标识符,该标识符一般用英文大写并遵守标识符命名规则,这个标识符加上一个“:”一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。
goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在特定情况下,可以使用goto语句来提高程序的执行速度,所以还是少用为妙。
#include <stdio.h> int main() { int sum = 0; int i; for(i=1; i<=10; i++) { printf("%d\n", i); if(i==3) //转义到LOOP所在位置继续执行 goto LOOP; } //LOOP就是一个有效标识符 LOOP: printf("结束for循环了...."); return 0; }
-------------------------------------------------------------------------------------------------------------------------------
此笔记只是个人简单的C语言笔记,方便回忆巩固C语言知识,只是大概的知识点,并不是很详细,不足之处还望在评论中指出。
(未完待续)
-------------------------------------------------------------------------------------------------------------------------------
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:641 |
Pascal三角 (C语言代码)格式错误浏览:551 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:660 |
【偶数求和】 (C语言代码)浏览:588 |
1642题解浏览:784 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:812 |
上车人数 (C语言代码)浏览:753 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:395 |
1415题求解浏览:681 |