C中表达式、语句、代码块

表达式(Expression)

表达式=运算符+操作数

表达式必须有一个执行结果,这个结果必须是一个值,例如 3*4+5 的结果 17,a=c=d=10 的结果是 10,printf("hello") 的结果是 5(printf 的返回值是成功打印的字符的个数)

运算符

  • 算术运算符→算术表达式
  • 关系运算符→关系表达式
  • 逻辑运算符→逻辑表达式

操作数

函数是被命名的可执行代码块,具有返回值的函数也可以用在表达式中,把其返回值作为构成表达式的操作数,以下为例子:

#include<iostream>

int main(int argc, char** argv)
{
    int sum=printf("hello \n"); //结果:hello
	printf("sum=%d \n",sum); //sum=7
	return 0;    
}

语句(Statement)

以分号;结束的往往称为语句,而不是表达式,例如 3*4+5;a=c=d;

表达式语句

int Sum(int a, int b)
{
  return a + b;
}

int main()
{
  int a =0;
  a;  /*变量表达式*/
  1;  /*常量表达式*/
  a + 1; /*算术表达式*/
  int b = 0;
  b = a; /*赋值表达式*/
  a == b; /*关系表达式*/
  a && b; /*逻辑表达式*/
  a = Sum(a, b); /*函数返回值为赋值表达式的操作数*/
  return 0;
}

函数调用语句

函数调用语句:由函数调用后添加分号构成,一般形式为 函数名(实际参数表);。执行函数调用语句,就是为函数传入实际参数,执行函数中的语句,并根据需要返回值的过程。函数调用语句的返回值也会被丢弃:

#include <stdio.h>

int Sum(int a, int b)
{
  return a + b;
}

int main()
{
  int a = 1;
  int b = 2;
  /*调用自定义函数,未用返回值*/
  Sum(a, b);
  /*调用库函数*/
  printf("a = %d, b = %d\n", a, b);
  return 0;
}

控制语句

  • 条件判断语句(if 语句, switch 语句)
  • 循环执行语句(do while 语句,while语句, for语句)
  • 转向语句(break语句,goto语句,continue语句, return语句)

复合语句

复合语句(compound statement)简称为语句块,它使用大括号把许多语句和声明组合到一起,形成单条语句。

语句块与简单的语句不同,语句块不用分号当作结尾。当出现语法上某处需要一条语句,但程序却需要执行多条语句时,就可以用到语句块。例如,可以在 if 语句中使用语句块,或者当循环体需要执行多条语句时,也可以使用语句块:

{ 
	double result = 0.0, x = 0.0;         // 声明
	static long status = 0;
	extern int limit;
  	++x;                                  // 语句
  	if ( status == 0 )
  	{                                     // 新语句块
     	int i = 0;
     	while ( status == 0 && i < limit )
     	{ /* ... */ }                      // 另一个语句块
  	}
  	else
  	{ /* ... */ }                         // 第三个语句块
}

如果语句块内需要有声明,通常会把声明放在语句块的头部,在其他语句之前。然而,C99 并不强制这么做,允许将声明放在语句块内的任何地方。

在语句块内声明的名称将具有语句块作用域。换句话说,这些名称只有自声明点开始,一直到语句块结尾之前有效。在这个作用域内,这种声明会把在语句块以外声明的同名称对象隐藏起来。

同样地,动态变量的存储周期也被限制在语句块中它们生成的地方。这意味着,如果一个变量没有被声明为 static 或 extern,那么该变量的存储空间会在语句块结束之后自动被释放。

空语句

int main()
{
  int i = 0;
  for (; i < 20; i++)
  {
    /*空语句*/
    ;
  }
  return 0;
}

代码块(Blocks)

代码块概念

和上面提到的复合语句(语句块)其实是相同的概念,所谓代码块,就是由{ }包围起来的代码。代码块在C语言中随处可见,例如函数体、选择结构、循环结构等。
【注意】一般来说代码块花括号后不用加;,但结构体在定义时视为一条完整的语句,所以在花括号后加;

struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在学习小组
    float score;  //成绩
};

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值