C语言中“语句”和“指令”有什么区别?
这里说的“语句”和“指令”有什么区别呀?
(C语言初学者一只,诚心求教) 展开
区别一:构成不一样
1、C程序的执行部分是由语句组成的。 程序的功能也是由执行语句实现的。
2、指令可以使编译器按不同的条件编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的,尤其是针对于跨平台程序移植的时候。
区别二:实现功能不一样
1、C程序语言可以实现多种程序结构, 即顺序结构、分支(选择)结构、循环结构。
2、指令可以实现源代码的部分编译功能,可以根据表达式的值或者某个特定的宏来确定编译条件,以决定编译哪些代码,不编译哪些。
扩展资料
C语言表达式语句
表达式语句由表达式加上分号“;”组成。
其一般形式为:表达式;执行表达式语句就是计算表达式的值和执行副作用。
例如: x=y+z;a=520;赋值语句;
y+z;加法运算语句,但计算结果不能保留,无实际意义;
i++; 自增1语句,i值增1。
i++; 是先运算i后再加1。
++i; 是先把i值增1后运算。
包括空语句,函数调用语句在内都属于表达式语句。
C语言条件编译指令
1、#if指令
该指令检测表达式值是否为真。如果表达式的值为真,则编译后面的代码直到出现 #else、#elif 或 #endif 为止,否则不编译。
2、#endif指令
该指令用于终止 #if 指令。
3、#else指令
该指令用于 #if 指令之后,当前面的 #if 指令的条件不为真时,就编译 #else 后面的代码。
4、#elif指令
该指令综合了 #else 和 #if 指令的作用。下面的示例代码演示了 #if、#else、#elif 与 #endif 的组合使用情况。
参考资料来源:百度百科—C语言基础语句
1. 语句(statement):
如果我们浏览C的yacc语法中的statement,有如下内容:
statement
: labeled_statement
| compound_statement
| expression_statement
| selection_statement
| iteration_statement
| jump_statement
;
这里就很清晰地将C的“语句”分成了6类(翻译参考自《C程序设计语言》第二版):
带标号语句(labeled statement)
例如
LABEL1:
printf("hello,world!");
复合语句(compound statement,指用花括号{}括起来的语句表(statement list))
表达式语句(expression statement)
例如
i += 1 * 2;
a = 1;
选择语句(selection statement,如if-else,switch-case语句等)
循环语句(iteration statement,如while,for语句等)
跳转语句(jump statement,如goto,break,return等)
通俗一点讲,语句就是定义在函数或方法,且用分号或花括号结尾,是C语言程序最基本的组成部分
2. 指令
其实C中并没有单纯“指令”这一概念,和其相近的是“预编译指令”
如#include,#define,#ifdef等
其作用是在编译之前,由编译器将所包含的头文件通过单纯粘贴的方式合并成单一文件后,再根据条件语句删去一些代码形成最终可编译的代码
综上所述,语句和(预编译)指令有很大差别,其作用和编译先后顺序完全不同
指令有很多分类方式,比如按照指令完成的任务不同可分为五大类:
1、数据传送类;2、算术运算类;3、逻辑运算及移位类;4、控制程序转移类;5、位操作类。
语句理解起来就容易多了,一个分号标志着一个语句结束。语句比较灵活,即使没有执行指令,仅有一个分号也叫一个语句。语句不一定是指令,如for语句、while语句等不一定就是指令,也有可能是空等待延时的。指令都是有一定格式的,不是随便写上就能构成语句的。
以上是我个人理解,不知道到位否?