C Programming学习笔记【谭浩强老师编】(第三章顺序程序设计)04 C语句



一、C语句结构

在这里插入图片描述

1.控制语句:

if()else…(条件语句)
② for()…(循环语句)
③ while()…(循环语句)
④ dowhile ()(循环语句)
⑤ continue(结束本次循环语句)
⑥ break(中止执行switch或循环语句)
⑦ switch(多分支选择语句)
⑧ return(从函数返回语句)
⑨ goto(转向语句,在结构化程序中基本不用goto语句)

()表示括号中是一个判别条件
…表示内嵌的语句

2.函数调用语句

函数调用语句由一个函数调用加一个分号构成。

printf("I am ihan001. ");

其中printf("I am ihan001. ");是一个函数调用,加一个分号成为一个语句。

3.表达式语句

表达式语句由一个表达式加一个分号构成,最典型的是由赋值表达式构成一个赋值语句。例如:
a=3
是一个赋值表达式,而
a=3;
是一个赋值语句。

4.空语句

;

只有一个分号的语句即为空语句。
可以用来作为流程的转向点(流程从程序其他地方转到此语句处);
也可用来作为循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。

5.复合语句

可以用{}把一些语句和声明括起来成为复合语句(又称语句块)。

{
	float pi=3.14159, r=2.5, area; //定义变量
	area=pi*r*r;
	printf("area=%f",area);
}

复合语句常用在if语句或循环中,此时程序需要连续执行一组语句。
复合语句中最后一个语句末尾的分号不能忽略不写。

二、赋值语句

举例1:给出三角形的三边长,求三角形面积。

思路:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。

#include <stdio.h>
#include <math.h>
int main ()
 {
	double a,b,c,s,area;				//定义各变量,均为double型 
	a=3.00;							//对边长a赋值 
	b=5.00;							//对边长b赋值 
	c=4.00;								//对边长c赋值
	s=(a+b+c)/2; 						//计算s 
	area=sqrt(s*(s-a)*(s-b)*(s-c));		//计算area 
	printf("a=%f\tb=%f\t%f\n",a,b,c); 	//输出三边a,b,c的值 
	printf("area=%f\n",area);			//输出面积area的值
	return 0;
 }


在这里插入图片描述

三、赋值运算符

“=”的作用是将一个数据赋给一个变量。
例如:a=3的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。
也可以将一个表达式的值赋给一个变量。

四、复合运算符

在赋值符=之前加上其他运算符,可以构成复合的运算符。

a+=3	等价于a=a+3

x*=y+8 	等价于x=x*(y+8)

x%=3	等价于x=x%3

凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。
有关算术运算的复合赋值运算符有+=,-=,=,/=,%=。

注意:
如果赋值符右边是包含若干项的表达式,则相当于它有括号。例如,
x%=y+3等价于x=x%(y+3),切勿错写为x=x%y+3。

五、赋值表达式

赋值表达式的作用是将一个表达式的值赋给一个变量,因此赋值表达式具有计算和赋值的双重功能。
对赋值表达式求解的过程是:
①求赋值运算符右侧的“表达式”的值,②赋给赋值运算符左侧的变量。既然是一个表达式,就应该有一个值,表达式的值等于赋值后左侧变量的值。
赋值运算符左侧应该是一个可修改值的“左值”(left value,简写为lvalue)。
能出现在赋值运算符右侧的表达式称为“右值”(right value,简写为rvalue)。

注意:并不是任何形式的数据都可以作为左值的,左值应当为存储空间并可以被赋值。变量可以作为左值,而算术表达式a+b就不能作为左值,常量也不能作为左值。

a=b=c=5 	表达式值为5,a,b,c值均为5
a=5+(c=6) 	表达式值为11,a值为11,c值为6
a=(b=4)+(c=6) 	表达式值为10,a值为10,b等于4,c等于6
a=(b=10)/(c=2)	表达式值为5,a等于5,b等于10,c等于2
a=(b=3*4)	表达式值为12,a,b值均为12

赋值表达式使得赋值操作不仅可以出现在赋值语句中,而且可以出现在其他语句中(如输出语句、循环语句等)
如: printf("%d", a=b);
如果b的值为3,则输出a的值(也是表达式a=b的值)为3。在一个printf函数中完成了赋值和输出双重功能。

六、赋值过程中的类型转换

如果赋值运算符两侧的类型一致,则直接进行赋值。
如果赋值运算符两侧的类型不一致,但都是基本类型时,在赋值时要进行类型转换。类型转换是由系统自动进行的,转换的规则是:
将浮点型数据(包括单、双精度)赋给整型变量时,先对浮点数取整,即舍弃小数部分,然后赋予整型变量。
将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。
将一个double型数据赋给float变量时,先将双精度数转换为单精度,即只取6~7位有效数字,存储到float型变量的4个字节中。应注意双精度数值的大小不能超出float型变量的数值范围;将一个float型数据赋给double型变量时,数值不变,在内存中以8个字节存储,有效位数扩展到15位。
字符型数据赋给整型变量时,将字符的ASCII代码赋给整型变量。
将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量(即发生“截断”)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值