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. 語句(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等
其作用是在編譯之前,由編譯器將所包含的標頭檔案透過單純貼上的方式合併成單一檔案後,再根據條件語句刪去一些程式碼形成最終可編譯的程式碼
綜上所述,語句和(預編譯)指令有很大差別,其作用和編譯先後順序完全不同